Lazy Foo' Productions

SDL Forums external link SDL Tutorials Articles OpenGL Tutorials OpenGL Forums external link
Follow BlueSky Follow Facebook Follow Twitter Follow Threads
Donate
News FAQs Contact Bugs

OpenGL Tutorials

Last Updated: Oct 19th, 2014

OpenGL is a powerful cross platform graphics API. With OpenGL, you can get hardware accelerated 2D and 3D rendering. This tutorial set was made to give beginners a head start by going through the basics of OpenGL usage.

For this tutorial we'll be starting using the OpenGL 2.1 era code to get started with the basics. Then we'll transition to modern OpenGL 3.0+ shader based programs.

Make sure to check out the Frequently Asked OpenGL Tutorial Questions. If you're having trouble with vector math, check out my OpenGL Math Primer.
Table of Contents
The Introduction to Introduction to OpenGL
What we will be covering in this OpenGL Tutorial.
Hello OpenGL
Render your first polygon with OpenGL.
Matrices and Coloring Polygons
Learn to add color to your OpenGL polygons.
The Viewport
Learn to control rendering in your OpenGL Window using the viewport.
Scrolling and the Matrix Stack
Learn to scroll your scene using matrices.
Texture Mapping and Pixel Manipulation
Learn to take pixels and turn them into OpenGL textures.
Loading a Texture
Learn to load texture images using DevIL.
Clipping Textures
Learn to clip portions of an OpenGL texture.
Non-Power-of-Two Textures
Learn to render OpenGL textures of any size.
Updating Textures
Learn to update texture pixels.
Color Keying and Blending
Learn to make images transparent using blending.
Stretching and Filters
Learn to stretch and scale images with OpenGL.
Rotation
Learn to rotate images with OpenGL.
Matrix Transformations
Learn to transform your OpenGL texture mapped quads.
Repeating Textures
Learn to tile textures in OpenGL.
Extensions and GLEW
Learn to use extended OpenGL using GLEW.
Vertex Arrays
Learn to render OpenGL polygons using Vertex Arrays.
Vertex Buffer Objects
Learn to render a polygon using modern OpenGL vertex buffer objects.
Textured Vertex Buffers
Learn to render an OpenGL texture using modern VBO.
Sprite Sheets
Learn to use multiple images per OpenGL texture using VBO sprite sheets.
Bitmap Fonts
Learn to load and render an OpenGL bitmap font.
Alpha Textures
Learn to use 8bit alpha textures for transparency blending.
Texture Blitting and Texture Padding
Learn to blit one OpenGL texture onto another.
FreeType Fonts
Learn to render FreeType fonts using OpenGL.
Text Alignment
Learn to align and center OpenGL text.
Transforming Text
Learn to rotate and scale OpenGL text.
The Stencil Buffer
Learn to stencil your scene using the OpenGL stencil buffer.
Frame Buffer Objects and Render to Texture
Learn to render your scene to a taxture using a Frame Buffer Object (FBO).
Antialiasing and Multisampling
Learn to render smooth polygons in OpenGL.
Hello GLSL
Learn to create GLSL shader programs.
Loading Text File Shaders
Learn to load GLSL shaders from a text file.
GLSL Matrices, Color, and Uniforms
Learn to set uniform variables to give polygons color.
GLM Matrices
Learn to use GLM matrices with GLSL.
Multi-Color Polygons and Attributes
Learn to use GLSL attributes in a shader program.
GLSL Texturing
Learn to render a texture using OpenGL 3.0 GLSL.
GLSL Font
Learn to render a OpenGL Font using OpenGL 3.0 GLSL methods.
Vertex Array Objects
Learn to use Vertex Array Objects in this VAO Tutorial.
Conclusion to Introduction to OpenGL
The OpenGL Tutorial conclusion. Thanks for visiting!
I am not claiming to know everything there is to know about programming/C++/OpenGL, but I have gained knowledge from the OpenGL projects I've worked on. These tutorials are made to pass on the knowledge I gained to those just starting out and to make OpenGL much less intimidating to beginners. I try to keep my code and tutorials as bug free as possible. If you find any errors please report them to me. Suggestions are also welcome.

So if you have any suggestions, comments, questions, bugs reports, typos, or anything else you want to say about the tutorials, feel free to contact me.