{
DoUpdate( intervalMilliseconds, location );
+ // Reset the status
+ mRenderStatus.SetNeedsUpdate( false );
+ mRenderStatus.SetNeedsPostRender( false );
+
mCore->PreRender( mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/ );
- mCore->RenderScene( mScene, true /*render the off-screen buffers*/);
- mCore->RenderScene( mScene, false /*render the surface*/);
+ mCore->RenderScene( mRenderStatus, mScene, true /*render the off-screen buffers*/);
+ mCore->RenderScene( mRenderStatus, mScene, false /*render the surface*/);
mCore->PostRender( false /*do not skip rendering*/ );
mFrame++;
return mRenderStatus.NeedsUpdate();
}
+bool TestApplication::GetRenderNeedsPostRender()
+{
+ return mRenderStatus.NeedsPostRender();
+}
+
bool TestApplication::RenderOnly( )
{
// Update Time values
mCore->PreRender( mRenderStatus, false /*do not force clear*/, false /*do not skip rendering*/ );
- mCore->RenderScene( mScene, true /*render the off-screen buffers*/);
- mCore->RenderScene( mScene, false /*render the surface*/);
+ mCore->RenderScene( mRenderStatus, mScene, true /*render the off-screen buffers*/);
+ mCore->RenderScene( mRenderStatus, mScene, false /*render the surface*/);
mCore->PostRender( false /*do not skip rendering*/ );
mFrame++;
if ( scene && windowSurface )
{
+ Integration::RenderStatus windowRenderStatus;
+
windowSurface->InitializeGraphics();
// Render off-screen frame buffers first if any
- mCore.RenderScene( scene, true );
+ mCore.RenderScene( windowRenderStatus, scene, true );
// Switch to the EGL context of the surface
windowSurface->PreRender( surfaceResized ); // Switch GL context
// Render the surface
- mCore.RenderScene( scene, false );
+ mCore.RenderScene( windowRenderStatus, scene, false );
- windowSurface->PostRender( false, false, surfaceResized ); // Swap Buffer
+ if( windowRenderStatus.NeedsPostRender() )
+ {
+ windowSurface->PostRender( false, false, surfaceResized ); // Swap Buffer
+ }
}
}
}