I am trying to get the latest CEGUI release (0.8.3) ready for support for your Ogre GL3 renderer changes, based on Ogre's current default branch. While doing so, i have been improving our (CEGUI's) step-by-step guide for Ogre/CEGUI
, but that just as a side-note. Once this all is done I will use CEGUI and Ogre in my project, which depends on tesselation shaders.
My progress so far was that everything compiles and links and runs. However, once the CEGUI sample framework start rendering (fixed-function enabled) i get error messages from the following function: void GL3PlusRenderSystem::_render(const RenderOperation& op)
Error-Message is "ERROR: Failed to create separable program." (line 1773)
This message is spammed non-stop and with the screen being constantly black. Obviously a message is sent for every geometrybuffer that is attempted to draw. I assume that the OGL3Renderer uses a shader-emulation for the fixed-function behavior, so that it doesn't rely on any deprecated OGL calls, is that correct? From my understanding this should normally fully replace the original behaviour so this problem should not even occur in the first place and at least with this option it should still run without problems.
I tried rendering with fixed-function pipeline on and off. The CEGUI Renderer for Ogre handles these two options seperately. Both do currently not work for different reasons, however I first will focus on getting the rendering with fixed-function done. I intend to use the glsl shader code that I wrote for our CEGUI OpenGL3 renderer for the programmable-pipeline option, which should work without problems. Also i will have to take care that the CEGUI Ogre renderer changes that will be applied to fix OGL3, won't break the other rendering options of Ogre or older Ogre versions (worst case I will have to rely on macros). So let's inspect the issue:
The problem currently is that GLSLSeparableProgramManager::getSingleton().getCurrentSeparableProgram() returns 0. I have not looked into it much deeper yet but maybe you could hint me towards something that might be missing compared to the original OGL fixed-function pipeline?