ITexture *GetPowerOfTwoFrameBufferTexture( void ) { if ( IsX360() ) { return GetFullFrameFrameBufferTexture( 1 ); } if ( !s_pPowerOfTwoFrameBufferTexture ) { s_pPowerOfTwoFrameBufferTexture.Init( materials->FindTexture( "_rt_PowerOfTwoFB", TEXTURE_GROUP_RENDER_TARGET ) ); Assert( !IsErrorTexture( s_pPowerOfTwoFrameBufferTexture ) ); AddReleaseFunc(); } return s_pPowerOfTwoFrameBufferTexture; }
//------------------------------------------------------------------------------ // CExampleEffect render //------------------------------------------------------------------------------ void CExampleEffect::Render( int x, int y, int w, int h ) { if ( !IsEnabled() ) return; // Render Effect Rect_t actualRect; UpdateScreenEffectTexture( 0, x, y, w, h, false, &actualRect ); ITexture *pTexture = GetFullFrameFrameBufferTexture( 0 ); CMatRenderContextPtr pRenderContext( materials ); pRenderContext->DrawScreenSpaceRectangle( m_Material, x, y, w, h, actualRect.x, actualRect.y, actualRect.x+actualRect.width-1, actualRect.y+actualRect.height-1, pTexture->GetActualWidth(), pTexture->GetActualHeight() ); }
void draw_pp_shader( const CViewSetup &view, IMaterial *pMaterial) { int x = view.x; int y = view.y; int w = view.width; int h = view.height; Rect_t actualRect; UpdateScreenEffectTexture( 0, x, y, w, h, false, &actualRect); int u1 = actualRect.x; int v1 = actualRect.y; int u2 = actualRect.x+actualRect.width-1; int v2 = actualRect.y+actualRect.height-1; ITexture *pTexture = GetFullFrameFrameBufferTexture( 0 ); int aw = pTexture->GetActualWidth(); int ah = pTexture->GetActualHeight(); CMatRenderContextPtr pRenderContext( materials ); pRenderContext->DrawScreenSpaceRectangle( pMaterial, x, y, w, h, u1, v1, u2, v2, aw, ah ); pRenderContext.SafeRelease(); }