We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Practical OpenGL and GLSL shaders fundamentals with C++

Serhii Kravchenko

Welcome to the OpenGL, GLSL and computer graphics course.

It is practical and illustrated program, designed to give you a visual intuition and practical skills to program computer graphics using OpenGL, GLSL and C ++

Read more

Welcome to the OpenGL, GLSL and computer graphics course.

It is practical and illustrated program, designed to give you a visual intuition and practical skills to program computer graphics using OpenGL, GLSL and C ++

It is raw concentrated squeeze of OpenGL and GLSL knowledge (no "water".  no long talks that make you fall asleep)

The course is designed to start from fundamentals - and move to advanced topics like shaders, matrices, transformations, GLSL language, raster effects, texturing and shading.

In fact, the course is very easy to master. Because it is practical, visually illustrated and has code samples and live coding sessions.

It's created to help you develop the visual intuition about 3D programming models (so I developed some beautiful illustrations and   visualizations - just to show you how things work "under the hood")

It will help you to build the proper mental models, patterns, and coding skills - to grasp the underlying concepts and internal elegancy of OpenGL machinery, as well as 3D math (because they're tricky)

There are live coding sessions and you get the full access to the source code

The course covers all important topics of modern OpenGL, such as:

- geometry, and buffers, VBOs and VAOs

- transformations and matrices, matrix hierarchy

- shaders and GLSL

- procedural art (and GLSL shaders-generated images)

- texturing

So feel free to explore it and I hope you'll enjoy it just as I did during its creation

Enroll now

What's inside

Learning objectives

  • Learn opengl and glsl
  • Explore the modern rendering pipeline and shaders
  • Feed the vertex data - to buffers (vbo) and setup the buffer formats
  • Play with shaders and glsl
  • Make fun procedural computer graphics
  • Learn 3d transformations: rotation, scale and perspective projection
  • Load and draw textures (sprites)
  • Render the 3d geometry

Syllabus

OpenGL basics

Welcome to the OpenGL and computer graphics course.

The world of computer graphics is amazing! During this course you'll learn how to use modern OpenGL API and render beautiful 2d and 3d images.

This lecture is 101 (introduction) to the fundamental concepts of computer graphics

and typical problems like:

- drawing the basic shapes (circles, triangles)

- rasterizaton

- basic rendering algorithms

- the essence of the CG images

Read more

What is OpenGL?

It is a "state machine" that can be set up to perform rendering

Lets dive into the fundamentals of OpenGL machinery. Actually its easy to get the basic idea - OpenGL is a "server" and you apply C-function calls (as a "client") to "access" and "modify" its state. To setup the scene and the OpenGL renders it

Also in this lecture:

- the "phototable" metaphor

- feeding the OpenGL with the geometry (vertices)

- introduction to shaders

- the "rendering pipeline" concept

- OpenGL screen coordinates

MacOS setup of the GLFW helper library
Windows setup of the GLFW helper library
Basic GLFW & OpenGL app setup
Rendering and geometry
Drawing a circle procedurally
2D point rotation
More on 2D transformations
Stack of matrices
Shaders and GLSL
Intro to shaders
The rendering pipeline and shaders
GLSL, shaders attributes and geometry VBOs

This is summary of the Section 3

I highlight some of the important concepts on the geometry (like CW and CCW directions of vertices, loading of multiple vertex buffer objects, setting up shader variables and varyings, etc)

Hope this help to summarize everything and build the general understanding of how the basic shaders machinery works

Vertex array objects (VAOs) and RAM buffers

How do the shadertoy.com masterpieces work?

They use full-screen rendering from within the shaders.

Lets explore the very basic principle to do so

Want to know more about 4D matrices and why we need them?

Let's explore the homogenous coordinates!

This is an elegant mathematical "trick" to make a uniform stack of 4D matrices - to represent not only rotation and scale but also translation (and concatenate the combined transformations easily!).

In real 2d and 3d games engines this ability gives us amazing boost in performance! Where each child sub-node has its own 4D node transformation defined relative to the parent node.

So we only apply the transformation once

ps. actually for the simplicity I explore 3D homogenous coordinate as we cannot think in 4D

but the same logic is applicable to 4D world as well! So just get the principal idea

Textures
Drawing a textured rectangle (sprite)
Loading a texture from the BMP file
3D rendering

Lets enter the 3D space!

3D rendering has its own caveats and tricks.

So lets just start simple and build a rotating cube!

A small lesson of how to add the GLM math library.

It will be neccessary to use it to define the projection transformation later

Texturing the cube
Perspective projection

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches modern OpenGL API and GLSL, which are industry standards in computer graphics
Provides comprehensive study of OpenGL and GLSL, including geometry, shaders, textures, and 3D rendering
Offers live coding sessions and access to source code, fostering practical learning and understanding
Developed beautiful illustrations and visualizations to enhance visual intuition and understanding
Suitable for beginners seeking to develop visual intuition and practical skills in computer graphics using OpenGL, GLSL, and C++
Covers geometry, shaders, GLSL, procedural art, texturing, and shading, providing a strong foundation in OpenGL and GLSL principles

Save this course

Save Practical OpenGL and GLSL shaders fundamentals with C++ to your list so you can find it easily later:
Save

Reviews summary

Helpful opengl and glsl fundamentals

According to students, this course is really helpful and a short way to learn OpenGL and GLSL fundamentals. One student appreciated the explanations of details within the course.
This course can teach you OpenGL and GLSL fundamentals quickly.
"Really helpful course, which will explain all needed details of OpenGL in short time."
This course explains the details of OpenGL.
"Really helpful course, which will explain all needed details of OpenGL in short time."
Students found this course to be really helpful.
"Really helpful course, which will explain all needed details of OpenGL in short time."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Practical OpenGL and GLSL shaders fundamentals with C++ with these activities:
Review the fundamentals of OpenGL
Refresh your knowledge of OpenGL primitives.
Browse courses on OpenGL
Show steps
  • Review OpenGL documentation
  • Practice with simple OpenGL programs
Follow online tutorials on OpenGL
Explore interactive OpenGL tutorials.
Browse courses on OpenGL
Show steps
  • Find online tutorials
  • Follow step-by-step instructions
  • Implement concepts in your own code
Form a study group for OpenGL
Collaborate and learn from your peers.
Browse courses on OpenGL
Show steps
  • Find like-minded peers
  • Establish regular meetings
  • Discuss OpenGL concepts
  • Work on projects together
Four other activities
Expand to see all activities and additional details
Show all seven activities
Solve coding challenges on OpenGL
Test your understanding through practical exercises.
Browse courses on OpenGL
Show steps
  • Find coding challenges and exercises
  • Solve problems using OpenGL and GLSL
  • Review and analyze solutions
Mentor junior developers in OpenGL
Share your knowledge and make a difference.
Browse courses on OpenGL
Show steps
  • Offer your services as a mentor
  • Guide and support junior developers
  • Share best practices
Create a 3D model and render it using OpenGL
Apply your OpenGL skills to bring your own 3D creation to life.
Browse courses on 3D Modeling
Show steps
  • Design and create a 3D model
  • Import the model into OpenGL
  • Write shaders to render the model
  • Animate the model
Participate in OpenGL competitions
Challenge yourself and showcase your skills.
Browse courses on OpenGL
Show steps
  • Find OpenGL competitions
  • Prepare for the competition
  • Submit your entry
  • Review feedback and improve

Career center

Learners who complete Practical OpenGL and GLSL shaders fundamentals with C++ will develop knowledge and skills that may be useful to these careers:
Lead Game Designer
A Lead Game Designer leads a team of game designers and is responsible for creating the overall concept, design, and storyline for a video game. This course may be useful because it provides a comprehensive introduction to computer graphics, including 3D rendering and texturing, which are essential for creating visually appealing games.
Technical Artist
A Technical Artist creates technical assets, such as 3D models, textures, and animations, for use in video games and other digital media. This course may be useful because it provides a comprehensive introduction to computer graphics, including 3D modeling, texturing, and animation, which are essential for creating high-quality technical assets.
Lead Technical Artist
A Lead Technical Artist leads a team of technical artists and is responsible for creating technical assets, such as 3D models, textures, and animations, for use in video games and other digital media. This course may be useful because it provides a comprehensive introduction to computer graphics, including 3D modeling, texturing, and animation, which are essential for creating high-quality technical assets.
Scientific Visualization Artist
A Scientific Visualization Artist creates visual representations of scientific data for use in research, education, and public outreach. This course may be useful because it provides a solid foundation in the fundamentals of computer graphics, including 3D rendering and animation, which are essential for creating visually compelling scientific visualizations.
Video Editor
A Video Editor edits and assembles video footage for use in film, television, and other digital media. This course may be useful because it provides a solid foundation in the fundamentals of computer graphics, including video editing and compositing, which are essential for creating visually appealing and engaging video content.
Multimedia Artist
A Multimedia Artist creates multimedia content for use in websites, social media, and other digital platforms. This course may be useful because it provides a comprehensive introduction to computer graphics, including 2D and 3D design, animation, and video editing.
Simulation Engineer
A Simulation Engineer develops and uses computer simulations to analyze and predict the behavior of complex systems. This course may be useful because it provides a comprehensive introduction to computer graphics, including 3D modeling and rendering, which are essential for creating realistic and accurate simulations.
Game Designer
A Game Designer creates the overall concept, design, and storyline for video games. This course may be useful because it provides a solid foundation in the fundamentals of computer graphics, including 3D rendering and texturing, which are essential for creating visually appealing games.
Web Designer
A Web Designer creates the visual design and layout of websites. This course may be useful because it provides a strong foundation in the fundamentals of computer graphics, including 2D and 3D design, which are essential for creating visually appealing and user-friendly websites.
Creative Director
A Creative Director develops and executes the creative vision for a project, such as a film, television show, or video game. This course may be useful because it provides a solid foundation in the fundamentals of computer graphics, which are essential for creating visually appealing and engaging creative content.
Art Director
An Art Director oversees the visual aspects of a creative project, such as a film, television show, or video game. This course may be useful because it provides a comprehensive introduction to computer graphics, including 2D and 3D design, animation, and video editing, which are essential for creating visually appealing and engaging creative content.
User Experience Designer
A User Experience Designer designs the user interface and user experience for websites, apps, and other digital products. This course may be useful because it provides a solid foundation in the fundamentals of computer graphics, including 2D and 3D design, which are essential for creating visually appealing and user-friendly digital products.
Product Designer
A Product Designer creates physical products, such as furniture, appliances, and cars. This course may be useful because it provides a strong foundation in the fundamentals of computer graphics, including 3D modeling and rendering, which are essential for creating visually appealing product designs.
Software Engineer
A Software Engineer designs, develops, and tests software applications. This course may be useful because it provides a strong foundation in the fundamentals of computer graphics, which are essential for creating visually appealing and user-friendly software applications.
Computer Graphics Artist
A Computer Graphics Artist works with computer-aided design software to create 2D and 3D graphics for use in film, television, animation, and video games. This course may be useful because it provides a practical introduction to OpenGL and GLSL, which are essential tools for creating computer graphics.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Practical OpenGL and GLSL shaders fundamentals with C++.
"OpenGL Shading Language" is the official guide to the OpenGL Shading Language (GLSL). The book provides comprehensive coverage of the language, including the latest versions. The book valuable resource for anyone who wants to learn about GLSL.
"Real-Time Rendering" provides a comprehensive overview of real-time rendering techniques. The book covers a wide range of topics, including graphics pipelines, shading, and lighting.
"Graphics Shaders: Theory and Practice" provides a detailed guide to graphics shaders. The book covers a wide range of topics, including shader languages, shading techniques, and optimization.
"3D Computer Graphics: A Mathematical Introduction with OpenGL" provides a mathematical introduction to 3D computer graphics. The book covers a wide range of topics, including transformations, projections, and lighting.
"Advanced RenderMan: Creating CGI for Motion Pictures" provides a detailed guide to RenderMan, a powerful rendering software used in the film industry. The book covers a wide range of topics, including RenderMan fundamentals, shading, and lighting.
"Essential Mathematics for Games and Interactive Applications" provides a comprehensive overview of the mathematics that are used in games and interactive applications. The book covers a wide range of topics, including linear algebra, calculus, and physics.
"The Art of 3D Computer Animation and Effects" provides a comprehensive overview of 3D computer animation and effects. The book covers a wide range of topics, including 3D modeling, animation, and rendering.
"OpenGL Programming for Windows" provides a detailed guide to OpenGL programming on Windows. The book covers a wide range of topics, including OpenGL fundamentals, device contexts, and window handling.
"OpenGL ES 2.0 Programming Guide" provides a detailed guide to OpenGL ES 2.0 programming. The book covers a wide range of topics, including OpenGL ES fundamentals, device contexts, and window handling.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Practical OpenGL and GLSL shaders fundamentals with C++.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser