Kaydet (Commit) c03090c9 authored tarafından David Tardon's avatar David Tardon

don't leak impl. details

Also, returning std::unique_ptr<>& doesn't make any sense.

Change-Id: Iefb2a0bfe614264bc7b5d15652fcc15243df3d06
üst 039261b3
...@@ -98,9 +98,9 @@ public: ...@@ -98,9 +98,9 @@ public:
OpenGLProgram* UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble = "" ); OpenGLProgram* UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader, const OString& preamble = "" );
void UseNoProgram(); void UseNoProgram();
std::unique_ptr<RenderState>& state() RenderState& state()
{ {
return mpRenderState; return *mpRenderState;
} }
OpenGLCapabilitySwitch& getOpenGLCapabilitySwitch() OpenGLCapabilitySwitch& getOpenGLCapabilitySwitch()
......
...@@ -215,7 +215,7 @@ void OpenGLSalGraphicsImpl::InitializePreDrawState(XOROption eOpt) ...@@ -215,7 +215,7 @@ void OpenGLSalGraphicsImpl::InitializePreDrawState(XOROption eOpt)
CheckOffscreenTexture(); CheckOffscreenTexture();
CHECK_GL_ERROR(); CHECK_GL_ERROR();
mpContext->state()->viewport(Rectangle(Point(0, 0), Size(GetWidth(), GetHeight()))); mpContext->state().viewport(Rectangle(Point(0, 0), Size(GetWidth(), GetHeight())));
ImplInitClipRegion(); ImplInitClipRegion();
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -290,8 +290,8 @@ void OpenGLSalGraphicsImpl::freeResources() ...@@ -290,8 +290,8 @@ void OpenGLSalGraphicsImpl::freeResources()
void OpenGLSalGraphicsImpl::ImplSetClipBit( const vcl::Region& rClip, GLuint nMask ) void OpenGLSalGraphicsImpl::ImplSetClipBit( const vcl::Region& rClip, GLuint nMask )
{ {
mpContext->state()->scissor().disable(); mpContext->state().scissor().disable();
mpContext->state()->stencil().enable(); mpContext->state().stencil().enable();
VCL_GL_INFO( "Adding complex clip / stencil" ); VCL_GL_INFO( "Adding complex clip / stencil" );
GLuint nStencil = maOffscreenTex.StencilId(); GLuint nStencil = maOffscreenTex.StencilId();
...@@ -331,7 +331,7 @@ void OpenGLSalGraphicsImpl::ImplSetClipBit( const vcl::Region& rClip, GLuint nMa ...@@ -331,7 +331,7 @@ void OpenGLSalGraphicsImpl::ImplSetClipBit( const vcl::Region& rClip, GLuint nMa
glStencilMask( 0x00 ); glStencilMask( 0x00 );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
} }
void OpenGLSalGraphicsImpl::ImplInitClipRegion() void OpenGLSalGraphicsImpl::ImplInitClipRegion()
...@@ -349,23 +349,23 @@ void OpenGLSalGraphicsImpl::ImplInitClipRegion() ...@@ -349,23 +349,23 @@ void OpenGLSalGraphicsImpl::ImplInitClipRegion()
if (mbUseScissor) if (mbUseScissor)
{ {
Rectangle aRect(maClipRegion.GetBoundRect()); Rectangle aRect(maClipRegion.GetBoundRect());
mpContext->state()->scissor().set(aRect.Left(), GetHeight() - aRect.Bottom() - 1, aRect.GetWidth(), aRect.GetHeight()); mpContext->state().scissor().set(aRect.Left(), GetHeight() - aRect.Bottom() - 1, aRect.GetWidth(), aRect.GetHeight());
mpContext->state()->scissor().enable(); mpContext->state().scissor().enable();
} }
else else
{ {
mpContext->state()->scissor().disable(); mpContext->state().scissor().disable();
} }
if (mbUseStencil) if (mbUseStencil)
{ {
glStencilFunc( GL_EQUAL, 1, 0x1 ); glStencilFunc( GL_EQUAL, 1, 0x1 );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
mpContext->state()->stencil().enable(); mpContext->state().stencil().enable();
} }
else else
{ {
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
} }
} }
...@@ -543,8 +543,8 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture() ...@@ -543,8 +543,8 @@ bool OpenGLSalGraphicsImpl::CheckOffscreenTexture()
// TODO: lfrb: User GL_ARB_copy_image? // TODO: lfrb: User GL_ARB_copy_image?
OpenGLTexture aNewTex = OpenGLTexture( GetWidth(), GetHeight() ); OpenGLTexture aNewTex = OpenGLTexture( GetWidth(), GetHeight() );
mpContext->state()->scissor().disable(); mpContext->state().scissor().disable();
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
mpContext->AcquireFramebuffer( aNewTex ); mpContext->AcquireFramebuffer( aNewTex );
DrawTexture( maOffscreenTex, aPosAry ); DrawTexture( maOffscreenTex, aPosAry );
...@@ -1096,8 +1096,8 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( ...@@ -1096,8 +1096,8 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture(
// The scissor area is set to the current window size in PreDraw, // The scissor area is set to the current window size in PreDraw,
// so if we do not disable the scissor test, the texture produced // so if we do not disable the scissor test, the texture produced
// by the first downscaling is clipped to the current window size. // by the first downscaling is clipped to the current window size.
mpContext->state()->scissor().disable(); mpContext->state().scissor().disable();
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
// the square root of the whole inverted scale ratio // the square root of the whole inverted scale ratio
double ixscalesqrt = std::floor(std::sqrt(ixscale)); double ixscalesqrt = std::floor(std::sqrt(ixscale));
...@@ -1118,10 +1118,10 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture( ...@@ -1118,10 +1118,10 @@ void OpenGLSalGraphicsImpl::DrawTransformedTexture(
// Re-enable scissor and stencil tests if needed. // Re-enable scissor and stencil tests if needed.
if (mbUseScissor) if (mbUseScissor)
mpContext->state()->scissor().enable(); mpContext->state().scissor().enable();
if (mbUseStencil) if (mbUseStencil)
mpContext->state()->stencil().enable(); mpContext->state().stencil().enable();
} }
} }
...@@ -1985,14 +1985,14 @@ bool OpenGLSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPoly, ...@@ -1985,14 +1985,14 @@ bool OpenGLSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPoly,
ImplSetClipBit( vcl::Region( rPolyPoly ), 0x02 ); ImplSetClipBit( vcl::Region( rPolyPoly ), 0x02 );
if( mbUseStencil ) if( mbUseStencil )
{ {
mpContext->state()->stencil().enable(); mpContext->state().stencil().enable();
CHECK_GL_ERROR(); CHECK_GL_ERROR();
glStencilFunc( GL_EQUAL, 3, 0xFF ); glStencilFunc( GL_EQUAL, 3, 0xFF );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
} }
else else
{ {
mpContext->state()->stencil().enable(); mpContext->state().stencil().enable();
CHECK_GL_ERROR(); CHECK_GL_ERROR();
glStencilFunc( GL_EQUAL, 2, 0xFF ); glStencilFunc( GL_EQUAL, 2, 0xFF );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -2032,7 +2032,7 @@ bool OpenGLSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPoly, ...@@ -2032,7 +2032,7 @@ bool OpenGLSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPoly,
#if FIXME_BROKEN_STENCIL_FOR_GRADIENTS #if FIXME_BROKEN_STENCIL_FOR_GRADIENTS
if( !mbUseStencil ) if( !mbUseStencil )
{ {
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
CHECK_GL_ERROR(); CHECK_GL_ERROR();
} }
#endif #endif
...@@ -2063,8 +2063,8 @@ void OpenGLSalGraphicsImpl::doFlush() ...@@ -2063,8 +2063,8 @@ void OpenGLSalGraphicsImpl::doFlush()
if (OpenGLContext::hasCurrent()) if (OpenGLContext::hasCurrent())
{ {
mpContext->state()->scissor().disable(); mpContext->state().scissor().disable();
mpContext->state()->stencil().disable(); mpContext->state().stencil().disable();
} }
if( IsOffscreen() ) if( IsOffscreen() )
...@@ -2108,10 +2108,10 @@ void OpenGLSalGraphicsImpl::doFlush() ...@@ -2108,10 +2108,10 @@ void OpenGLSalGraphicsImpl::doFlush()
CHECK_GL_ERROR(); CHECK_GL_ERROR();
mpWindowContext->state()->sync(); mpWindowContext->state().sync();
mpWindowContext->state()->viewport(Rectangle(Point(0, 0), Size(GetWidth(), GetHeight()))); mpWindowContext->state().viewport(Rectangle(Point(0, 0), Size(GetWidth(), GetHeight())));
mpWindowContext->state()->scissor().disable(); mpWindowContext->state().scissor().disable();
mpWindowContext->state()->stencil().disable(); mpWindowContext->state().stencil().disable();
#if OSL_DEBUG_LEVEL > 0 // random background glClear #if OSL_DEBUG_LEVEL > 0 // random background glClear
glClearColor((float)rand()/RAND_MAX, (float)rand()/RAND_MAX, glClearColor((float)rand()/RAND_MAX, (float)rand()/RAND_MAX,
......
...@@ -185,7 +185,7 @@ GLuint OpenGLProgram::GetUniformLocation( const OString& rName ) ...@@ -185,7 +185,7 @@ GLuint OpenGLProgram::GetUniformLocation( const OString& rName )
void OpenGLProgram::DrawArrays(GLenum aMode, std::vector<GLfloat>& aVertices) void OpenGLProgram::DrawArrays(GLenum aMode, std::vector<GLfloat>& aVertices)
{ {
if (!mbBlending) if (!mbBlending)
OpenGLContext::getVCLContext()->state()->blend().disable(); OpenGLContext::getVCLContext()->state().blend().disable();
SetVertices(aVertices.data()); SetVertices(aVertices.data());
glDrawArrays(aMode, 0, aVertices.size() / 2); glDrawArrays(aMode, 0, aVertices.size() / 2);
...@@ -194,7 +194,7 @@ void OpenGLProgram::DrawArrays(GLenum aMode, std::vector<GLfloat>& aVertices) ...@@ -194,7 +194,7 @@ void OpenGLProgram::DrawArrays(GLenum aMode, std::vector<GLfloat>& aVertices)
void OpenGLProgram::DrawElements(GLenum aMode, GLuint nNumberOfVertices) void OpenGLProgram::DrawElements(GLenum aMode, GLuint nNumberOfVertices)
{ {
if (!mbBlending) if (!mbBlending)
OpenGLContext::getVCLContext()->state()->blend().disable(); OpenGLContext::getVCLContext()->state().blend().disable();
glDrawElements(aMode, nNumberOfVertices, GL_UNSIGNED_INT, nullptr); glDrawElements(aMode, nNumberOfVertices, GL_UNSIGNED_INT, nullptr);
} }
...@@ -295,8 +295,7 @@ void OpenGLProgram::SetTexture( const OString& rName, OpenGLTexture& rTexture ) ...@@ -295,8 +295,7 @@ void OpenGLProgram::SetTexture( const OString& rName, OpenGLTexture& rTexture )
glUniform1i( nUniform, nIndex ); glUniform1i( nUniform, nIndex );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
std::unique_ptr<RenderState>& rState = OpenGLContext::getVCLContext()->state(); OpenGLContext::getVCLContext()->state().texture().active(nIndex);
rState->texture().active(nIndex);
rTexture.Bind(); rTexture.Bind();
maTextures.push_back(rTexture); maTextures.push_back(rTexture);
...@@ -359,8 +358,8 @@ void OpenGLProgram::ApplyMatrix(float fWidth, float fHeight, float fPixelOffset) ...@@ -359,8 +358,8 @@ void OpenGLProgram::ApplyMatrix(float fWidth, float fHeight, float fPixelOffset)
void OpenGLProgram::SetBlendMode(GLenum nSFactor, GLenum nDFactor) void OpenGLProgram::SetBlendMode(GLenum nSFactor, GLenum nDFactor)
{ {
OpenGLContext::getVCLContext()->state()->blend().enable(); OpenGLContext::getVCLContext()->state().blend().enable();
OpenGLContext::getVCLContext()->state()->blend().func(nSFactor, nDFactor); OpenGLContext::getVCLContext()->state().blend().func(nSFactor, nDFactor);
mbBlending = true; mbBlending = true;
} }
......
...@@ -549,8 +549,8 @@ bool OpenGLSalBitmap::ReadTexture() ...@@ -549,8 +549,8 @@ bool OpenGLSalBitmap::ReadTexture()
OpenGLVCLContextZone aContextZone; OpenGLVCLContextZone aContextZone;
rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext(); rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext();
xContext->state()->scissor().disable(); xContext->state().scissor().disable();
xContext->state()->stencil().disable(); xContext->state().stencil().disable();
if (mnBits == 8 || mnBits == 16 || mnBits == 24 || mnBits == 32) if (mnBits == 8 || mnBits == 16 || mnBits == 24 || mnBits == 32)
{ {
...@@ -632,8 +632,8 @@ bool OpenGLSalBitmap::calcChecksumGL(OpenGLTexture& rInputTexture, ChecksumType& ...@@ -632,8 +632,8 @@ bool OpenGLSalBitmap::calcChecksumGL(OpenGLTexture& rInputTexture, ChecksumType&
OUString FragShader("areaHashCRC64TFragmentShader"); OUString FragShader("areaHashCRC64TFragmentShader");
rtl::Reference< OpenGLContext > xContext = OpenGLContext::getVCLContext(); rtl::Reference< OpenGLContext > xContext = OpenGLContext::getVCLContext();
xContext->state()->scissor().disable(); xContext->state().scissor().disable();
xContext->state()->stencil().disable(); xContext->state().stencil().disable();
static vcl::DeleteOnDeinit<OpenGLTexture> gCRCTableTexture( static vcl::DeleteOnDeinit<OpenGLTexture> gCRCTableTexture(
new OpenGLTexture(512, 1, GL_RGBA, GL_UNSIGNED_BYTE, new OpenGLTexture(512, 1, GL_RGBA, GL_UNSIGNED_BYTE,
...@@ -864,8 +864,8 @@ bool OpenGLSalBitmap::Replace( const Color& rSearchColor, const Color& rReplaceC ...@@ -864,8 +864,8 @@ bool OpenGLSalBitmap::Replace( const Color& rSearchColor, const Color& rReplaceC
OpenGLZone aZone; OpenGLZone aZone;
rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext(); rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext();
xContext->state()->scissor().disable(); xContext->state().scissor().disable();
xContext->state()->stencil().disable(); xContext->state().stencil().disable();
OpenGLFramebuffer* pFramebuffer; OpenGLFramebuffer* pFramebuffer;
OpenGLProgram* pProgram; OpenGLProgram* pProgram;
...@@ -904,8 +904,8 @@ bool OpenGLSalBitmap::ConvertToGreyscale() ...@@ -904,8 +904,8 @@ bool OpenGLSalBitmap::ConvertToGreyscale()
OpenGLZone aZone; OpenGLZone aZone;
rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext(); rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext();
xContext->state()->scissor().disable(); xContext->state().scissor().disable();
xContext->state()->stencil().disable(); xContext->state().stencil().disable();
OpenGLFramebuffer* pFramebuffer; OpenGLFramebuffer* pFramebuffer;
OpenGLProgram* pProgram; OpenGLProgram* pProgram;
......
...@@ -334,8 +334,8 @@ bool OpenGLSalBitmap::ImplScale( const double& rScaleX, const double& rScaleY, B ...@@ -334,8 +334,8 @@ bool OpenGLSalBitmap::ImplScale( const double& rScaleX, const double& rScaleY, B
mpUserBuffer.reset(); mpUserBuffer.reset();
OpenGLVCLContextZone aContextZone; OpenGLVCLContextZone aContextZone;
rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext(); rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext();
xContext->state()->scissor().disable(); xContext->state().scissor().disable();
xContext->state()->stencil().disable(); xContext->state().stencil().disable();
if (rScaleX <= 1 && rScaleY <= 1) if (rScaleX <= 1 && rScaleY <= 1)
{ {
......
...@@ -50,8 +50,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, bool bAllocate ) ...@@ -50,8 +50,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, bool bAllocate )
auto& rState = OpenGLContext::getVCLContext()->state(); auto& rState = OpenGLContext::getVCLContext()->state();
TextureState::generate(mnTexture); TextureState::generate(mnTexture);
rState->texture().active(0); rState.texture().active(0);
rState->texture().bind(mnTexture); rState.texture().bind(mnTexture);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -85,8 +85,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nX, int nY, int nWidth, int nHeight ) ...@@ -85,8 +85,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nX, int nY, int nWidth, int nHeight )
auto& rState = OpenGLContext::getVCLContext()->state(); auto& rState = OpenGLContext::getVCLContext()->state();
TextureState::generate(mnTexture); TextureState::generate(mnTexture);
rState->texture().active(0); rState.texture().active(0);
rState->texture().bind(mnTexture); rState.texture().bind(mnTexture);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -114,8 +114,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, int nFormat, int ...@@ -114,8 +114,8 @@ ImplOpenGLTexture::ImplOpenGLTexture( int nWidth, int nHeight, int nFormat, int
auto& rState = OpenGLContext::getVCLContext()->state(); auto& rState = OpenGLContext::getVCLContext()->state();
TextureState::generate(mnTexture); TextureState::generate(mnTexture);
rState->texture().active(0); rState.texture().active(0);
rState->texture().bind(mnTexture); rState.texture().bind(mnTexture);
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -179,7 +179,7 @@ ImplOpenGLTexture::~ImplOpenGLTexture() ...@@ -179,7 +179,7 @@ ImplOpenGLTexture::~ImplOpenGLTexture()
mnOptStencil = 0; mnOptStencil = 0;
} }
auto& rState = pContext->state(); auto& rState = pContext->state();
rState->texture().unbindAndDelete(mnTexture); rState.texture().unbindAndDelete(mnTexture);
mnTexture = 0; mnTexture = 0;
} }
else else
...@@ -196,8 +196,8 @@ bool ImplOpenGLTexture::InsertBuffer(int nX, int nY, int nWidth, int nHeight, in ...@@ -196,8 +196,8 @@ bool ImplOpenGLTexture::InsertBuffer(int nX, int nY, int nWidth, int nHeight, in
return false; return false;
rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext(); rtl::Reference<OpenGLContext> xContext = OpenGLContext::getVCLContext();
xContext->state()->texture().active(0); xContext->state().texture().active(0);
xContext->state()->texture().bind(mnTexture); xContext->state().texture().bind(mnTexture);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
CHECK_GL_ERROR(); CHECK_GL_ERROR();
...@@ -482,8 +482,7 @@ void OpenGLTexture::Bind() ...@@ -482,8 +482,7 @@ void OpenGLTexture::Bind()
{ {
if (IsValid()) if (IsValid())
{ {
std::unique_ptr<RenderState>& rState = OpenGLContext::getVCLContext()->state(); OpenGLContext::getVCLContext()->state().texture().bind(mpImpl->mnTexture);
rState->texture().bind(mpImpl->mnTexture);
} }
else else
VCL_GL_INFO( "OpenGLTexture::Binding invalid texture" ); VCL_GL_INFO( "OpenGLTexture::Binding invalid texture" );
...@@ -495,8 +494,7 @@ void OpenGLTexture::Unbind() ...@@ -495,8 +494,7 @@ void OpenGLTexture::Unbind()
{ {
if (IsValid()) if (IsValid())
{ {
std::unique_ptr<RenderState>& rState = OpenGLContext::getVCLContext()->state(); OpenGLContext::getVCLContext()->state().texture().unbind(mpImpl->mnTexture);
rState->texture().unbind(mpImpl->mnTexture);
} }
} }
......
...@@ -774,7 +774,7 @@ bool X11OpenGLSalGraphicsImpl::RenderPixmap(X11Pixmap* pPixmap, X11Pixmap* pMask ...@@ -774,7 +774,7 @@ bool X11OpenGLSalGraphicsImpl::RenderPixmap(X11Pixmap* pPixmap, X11Pixmap* pMask
rCombo.mpTexture.reset(new OpenGLTexture(pPixmap->GetWidth(), pPixmap->GetHeight(), false)); rCombo.mpTexture.reset(new OpenGLTexture(pPixmap->GetWidth(), pPixmap->GetHeight(), false));
mpContext->state()->texture().active(0); mpContext->state().texture().active(0);
rCombo.mpTexture->Bind(); rCombo.mpTexture->Bind();
glXBindTexImageEXT( pDisplay, pGlxPixmap, GLX_FRONT_LEFT_EXT, nullptr ); glXBindTexImageEXT( pDisplay, pGlxPixmap, GLX_FRONT_LEFT_EXT, nullptr );
......
...@@ -707,7 +707,7 @@ OpenGLFramebuffer* OpenGLContext::AcquireFramebuffer( const OpenGLTexture& rText ...@@ -707,7 +707,7 @@ OpenGLFramebuffer* OpenGLContext::AcquireFramebuffer( const OpenGLTexture& rText
BindFramebuffer( pFramebuffer ); BindFramebuffer( pFramebuffer );
pFramebuffer->AttachTexture( rTexture ); pFramebuffer->AttachTexture( rTexture );
state()->viewport(Rectangle(Point(), Size(rTexture.GetWidth(), rTexture.GetHeight()))); state().viewport(Rectangle(Point(), Size(rTexture.GetWidth(), rTexture.GetHeight())));
return pFramebuffer; return pFramebuffer;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment