Ogre Version: 2.3.3
Operating System: Windows11
Render System: D3D11
Hi everyone,
how is it possible to achieve rendering of the same scene differently in different windows within the same application with Ogre 2.x? Let's consider following output:
There are 6 windows displaying identical scene - actually there are only triangular meshes (no duplicates with the lines geometry - conversion is done in geometry shaders).
First row:
hidden lines render mode - hidden lines rendered with constant color, pattern is set to "dotted" (or short lines)
hidden lines render mode - hidden lines rendered with object's color, pattern is set to "dashed"
hidden lines render mode - hidden lines are not rendered
Second row:
shaded - faces use color from the edges
shaded - faces use transparency, edges are not visible
shaded - faces use transparency, edges are visible and use different color
In Ogre 1.x I can imagine that it is possible through the materials with multiple techniques and Ogre::Renderable::getTechnique is virtual so it is them possible to write own class inherited from Ogre::Renderable which supports returning different techniques from the materials based on camera/window settings.
In Ogre 2.x however there is no virtual entry point - or at least I didn't find it. The only way which I think should work, is to overwrite the data blocks of collected renderables in Ogre::RenderQueue just before rendering the collected objects - e.g. in SceneManager::_renderPhase02 where there is also access to the camera. Unfortunately there is no listener where it can be done. Is there any more suitable way how to achieve such rendering without duplicating whole scene graph?