The most important part of the new code is in the OnDrawFrame()
method. It uses the clForwardRenderingTechnique
class to render the scene. Let's take a look at Technique.cpp.
A helper function RenderROPs()
is used to render a vector of rendering operations:
void RenderROPs( sMatrices& Matrices, const std::vector<clRenderOp>& RenderQueue, ePass Pass ) { for ( const auto& ROP : RenderQueue ) { ROP.Render( Matrices, g_MatSys, Pass ); } }
Now, all the passes can be described in terms of this function. Take a look at the function clForwardRenderingTechnique::Render()
. First, let's construct two rendering queues, for opaque and transparent objects. Transparent objects are those with the string Particle
as their material class. We will make use of transparent objects in the next chapter:
m_TransformUpdateTraverser.Traverse( Root ); m_ROPsTraverser.Traverse( Root ); const auto& RenderQueue = m_ROPsTraverser.GetRenderQueue()...