diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2012-04-26 14:04:55 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2012-04-26 14:04:55 -0400 |
commit | 78f2663c4a61a7983c84cf50e5d2fdd92811a1b0 (patch) | |
tree | 56bf81cc39cb8c5180508c37c552c8ab23273300 /indra/newview/lldynamictexture.cpp | |
parent | d6569db3520f7e0ce2d93febb6f4e26b48c08a3d (diff) | |
parent | 75c53a6a269890b9fe78b4b50d9b093a94778650 (diff) |
Automated merge with http://hg.secondlife.com/viewer-release
Diffstat (limited to 'indra/newview/lldynamictexture.cpp')
-rw-r--r-- | indra/newview/lldynamictexture.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index 5d6081a35c..a93b2b71de 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -125,8 +125,16 @@ BOOL LLViewerDynamicTexture::render() //----------------------------------------------------------------------------- void LLViewerDynamicTexture::preRender(BOOL clear_depth) { - { - // force rendering to on-screen portion of frame buffer + //only images up to 512x512 are supported + llassert(mFullHeight <= 512); + llassert(mFullWidth <= 512); + + if (gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete()) + { //using offscreen render target, just use the bottom left corner + mOrigin.set(0, 0); + } + else + { // force rendering to on-screen portion of frame buffer LLCoordScreen window_pos; gViewerWindow->getWindow()->getPosition( &window_pos ); mOrigin.set(0, gViewerWindow->getWindowHeightRaw() - mFullHeight); // top left corner @@ -140,9 +148,9 @@ void LLViewerDynamicTexture::preRender(BOOL clear_depth) mOrigin.mY += window_pos.mY; mOrigin.mY = llmax(mOrigin.mY, 0) ; } - - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); } + + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); // Set up camera LLViewerCamera* camera = LLViewerCamera::getInstance(); mCamera.setOrigin(*camera); @@ -208,6 +216,13 @@ BOOL LLViewerDynamicTexture::updateAllInstances() return TRUE; } + bool use_fbo = gGLManager.mHasFramebufferObject && gPipeline.mWaterDis.isComplete(); + + if (use_fbo) + { + gPipeline.mWaterDis.bindTarget(); + } + LLGLSLShader::bindNoShader(); LLVertexBuffer::unbind(); @@ -241,6 +256,11 @@ BOOL LLViewerDynamicTexture::updateAllInstances() } } + if (use_fbo) + { + gPipeline.mWaterDis.flush(); + } + return ret; } |