Last week I was continuing work on the new OpenGL 2 graphics foundation.
With most of the GL2 graphics classes on such a level that all basic functionality is present, I proceeded to try them out in a test application called "glsandbox". So far I've verified that the following features are working: VBOs and different vertex formats, indexed and non-indexed drawing of primitives, changing GL state and operating the state stack, loading textures from QImages, mipmap generation, texture parameters, vertex and fragment shaders, uniforms, building a complete shader program with uniforms and samplers, changing the render target, render-to-texture, resizing the window, and 3D matrix math.
Here's a screenshot from the glsandbox as it looks currently. As is the tradition, it draws a spinning cube with some effects. In this case, the cube on the right uses a texture that mirrors the contents of the whole framebuffer.
I'm quite happy with how the code is turning out. My goal is to put together a set of easy-to-use but powerful and efficient classes that enable a very versatile set of rendering techniques.
Playing around with graphics code has always been one of my favorite pastimes so glsandbox is proving to be a great motivational boost. However, I don't intend to linger here much longer. Now that the GL2 classes seem to be working as expected, I will soon integrate this (lightly) into the client's GUI and begin work on the new UI widgets. The integration will have some challenges, as the old GUI code manages GL state using a different set of principles, and the objective for the moment is to retain all of the old GL/GUI code in its current form, only using the new GL2 graphics in new UI widgets.
During the week I also fixed a Snowberry bug related to profile duplication. We will probably release a 1.10.2 patch in the near future.