| 221 | } |
| 222 | |
| 223 | void Tr2Sprite2dScene::Render( Tr2RenderContext& renderContext ) |
| 224 | { |
| 225 | CCP_STATS_ZONE( __FUNCTION__ ); |
| 226 | D3DPERF_EVENT( L"Tr2Sprite2dScene::Render" ); |
| 227 | |
| 228 | if( !m_display || !renderContext.IsValid() ) |
| 229 | { |
| 230 | return; |
| 231 | } |
| 232 | |
| 233 | bool isReady = PrepareResourcesForRender(); |
| 234 | if( !isReady ) |
| 235 | { |
| 236 | return; |
| 237 | } |
| 238 | |
| 239 | renderContext.AddGpuMarker( __FUNCTION__ ); |
| 240 | |
| 241 | if( m_useLinearColorSpace ) |
| 242 | { |
| 243 | renderContext.SetRenderState( Tr2RenderContextEnum::RS_SRGBWRITEENABLE, 1 ); |
| 244 | } |
| 245 | |
| 246 | // Flash default texture to make it easier to spot missing textures |
| 247 | FlashDefaultTexture(); |
| 248 | |
| 249 | m_lastViewMatrix = Tr2Renderer::GetViewTransform(); |
| 250 | m_lastProjectionMatrix = Tr2Renderer::GetProjectionTransform(); |
| 251 | |
| 252 | DetermineWorldTransform(); |
| 253 | DetermineViewportSize(); |
| 254 | |
| 255 | renderContext.m_esm.PushDepthStencilBuffer( Tr2TextureAL() ); |
| 256 | |
| 257 | PrepareRenderContextForRendering( renderContext ); |
| 258 | |
| 259 | PrepareStacksBeforeRender(); |
| 260 | |
| 261 | ResetBufferPointers(); |
| 262 | |
| 263 | m_itemsRendered = 0; |
| 264 | m_drawCallsRendered = 0; |
| 265 | |
| 266 | for( ITr2SpriteObjectVector::reverse_iterator it = m_background.rbegin(); it != m_background.rend(); ++it ) |
| 267 | { |
| 268 | ( *it )->GatherSprites( this ); |
| 269 | } |
| 270 | for( ITr2SpriteObjectVector::reverse_iterator it = m_children.rbegin(); it != m_children.rend(); ++it ) |
| 271 | { |
| 272 | ( *it )->GatherSprites( this ); |
| 273 | } |
| 274 | |
| 275 | CCP_ASSERT( !m_captureDisplayList ); |
| 276 | |
| 277 | IssueDrawCall(); |
| 278 | |
| 279 | PrepareRenderContextAfterRendering( renderContext ); |
| 280 |
no test coverage detected