Unlike God in Genesis, I had to sort out my own chaos before summoning light.
Tutorials are not meant to do 100% of the job for you. But there are some aspects of OpenGL that remain puzzling even when they are are presented to you for the umpteenth time. In this tutorial, the “answer code” is filled with buffer creations and variables assignments that either
- mimic more or less the flow of the tutorial.
- are simply patched on the legacy code of previous tutorials.
- have their own little section (in some sort of library) away for the main flow .
While the work is cut out for me in order to understand the math of lighting, it’s another business to actually create something that will be re-usable and useful in other circonstances without someone taking you by the hand every time. As I said before, since I’m not using most authors’ windowing system, I had built my own patched up version of their tutorials that fit my own window creation with mouse and keyboard control. As I was failing this tutorial (and others for reason I’ll have to investigate) I spent a couple of days just sorting out things in proper places for understanding how OpenGL ticks. And that bring me more satisfaction that an individual rendering (well, the rendering part is nice, too. 🙂 )
The code now looks more like the narratives I like to put in code when I create some class for future reading for myself or others.
- Generate all the necessary buffers for a given program.
- Set all needed Uniforms for this program.
- Collect data, bind it.
- Set the program as current and render.
The fact of creating buffer and setting all uniforms so early at this stage helps me understand the purpose of this program: what I need as resources, what to set, what to calculate and abstract that knowledge in a general point of view.
(FYI: programs, in OpenGL, are not individual binaries – like a program that you run on your computer – but a set of pipeline rules that objects – i.e. their vertices, normals and uv texturing coordinates – go through before showing the final results on the screen.)
Enjoy the results featuring Suzanne, the famous Blender monkey.