Let us now move onto the second program that you all probably wrote when learning OpenGL, rendering the standard cube. Next up, we're going to talk about OpenGL lighting, it's origins and theory and how to implement that theory in your shader programs. We talked about the Model, View, Projection idioms and how you can use uniforms to pass these variables (and others) to your shaders programs between draw calls. We covered how to use Qt's math functions to replace the matrix mode that was removed from Fixed-Function OpenGL and replaced with code you write in your vertex shader. In our last blog, we re-implemented the famous OpenGL triangle in world space and compared and contrasted the fixed-function GLUT program with an equivalent Modern OpenGL program. The code referenced in this blog is available here.