Still working away. Committed my 100th commit to my local repository.
Converted the ColorBuffers to VertexAttribBuffers. This allows much finer control over the bits sent to the GPU. I was hoping to have an "int" in the GLSL and it worked on my nVidia Quadro. On the nVidia 8800 GT is was not coming across as an int even though I was binding to "attribute int" in the GLSL. Looking at the documentation it does look like it should come across as a float which is unfortunate. Changing it to a float made the 8800 work great. Modified the shader and used "<<" and "%". Going back to the Quadro the shader would not compile because of the "<<" and "%". I had to remove those and the shader now works on both. I need to find a good way to get specific bits out of the VertexAttrib.
Open File and Save File dialogs are working. Multiple models being open at the same time is supported.
Disabled all code paths except for points which allows me to concentrate on designing and optimizing the editor with a subset of data.
The thread management has been rewritten to allow work items to be dependent on other work items. Each group in the model is processed separately taking advantage of multi-processor systems. In addition the thread management allows idle items that can happen after the rendering pass. This allows an action such as "Move" to happen, then rendering will happen, and after that idle processing goes in and handles the undo stack. This makes the interface respond faster since the undo stack processing is handled during idle. Undo and redo support is working good.
Optimized the measurement and layout of UI controls. They are now only done when something actually changes. I still need to do the same for the rendering by better caching into Vertex Buffers and Display Lists. I have converted most everything to Vertex Buffers. I have some good reuable code for handling vertex buffers and vertex arrays. It would be good to get into a library and put out there for others to use.
I am still tweaking a lot of code. At some point I will need mouse "Grab" support that grabs the mouse input and keeps it even if the mouse moves outside of the window. Of course I need to implement that same thing within the UI framework inside Golem3D. I am also looking forward to the new main loop scheduler that hopefully will make it in a release. It's hard to tell how much CPU Golem3D is using when the current scheduler uses 100% CPU even on a simple window.