| 1591 | } |
| 1592 | |
| 1593 | void Tr2Sprite2dScene::StartLayer( Tr2TextureAL& rt ) |
| 1594 | { |
| 1595 | CCP_STATS_ZONE( __FUNCTION__ ); |
| 1596 | USE_MAIN_THREAD_RENDER_CONTEXT(); |
| 1597 | |
| 1598 | D3DPERF_EVENT( L"Tr2Sprite2dScene::StartLayer" ); |
| 1599 | |
| 1600 | // Finish outstanding rendering before changing render target |
| 1601 | IssueDrawCall(); |
| 1602 | |
| 1603 | // A scene rendered in 3d renders in 2d within a layer |
| 1604 | m_is2dRenderContext = true; |
| 1605 | |
| 1606 | // Set the render target to the top level surface of the given texture |
| 1607 | renderContext.m_esm.PushRenderTarget( rt ); |
| 1608 | |
| 1609 | Vector4 vpSize; |
| 1610 | vpSize.x = (float)rt.GetWidth(); |
| 1611 | vpSize.y = (float)rt.GetHeight(); |
| 1612 | vpSize.z = 0.0f; |
| 1613 | vpSize.w = 1.0f; |
| 1614 | m_viewportSizeVar = vpSize; |
| 1615 | |
| 1616 | // Coordinate transformation and clipping is reset - push the current stacks |
| 1617 | // onto a stack for later retrieval when we end the layer. Remember that layers |
| 1618 | // may be nested. |
| 1619 | StackOfStacksEntry_t entry; |
| 1620 | entry.transformStack = m_transformStack; |
| 1621 | entry.clipStack = m_clipStack; |
| 1622 | entry.renderTargetTexture = &rt; |
| 1623 | entry.renderTargetWrapper.CreateInstance(); |
| 1624 | entry.renderTargetWrapper->SetRenderTarget( &rt ); |
| 1625 | m_stackOfStacks.push_back( entry ); |
| 1626 | |
| 1627 | m_transformStack = CCP_NEW( "Tr2Sprite2dScene/m_transformStack" ) TransformStack_t( "Tr2Sprite2dScene/m_transformStack" ); |
| 1628 | m_clipStack = CCP_NEW( "Tr2Sprite2dScene/m_clipStack" ) ClipStack_t( "Tr2Sprite2dScene/m_clipStack" ); |
| 1629 | m_clipStack->push_back( Tr2Sprite2dClipRect( 0.0f, 0.0f, vpSize.x, vpSize.y ) ); |
| 1630 | } |
| 1631 | |
| 1632 | void Tr2Sprite2dScene::EndLayer( float x, float y, float width, float height, ITr2Sprite2dTexture* secondaryTexture ) |
| 1633 | { |
no test coverage detected