diff options
author | Dave Parks <davep@lindenlab.com> | 2012-03-09 13:26:42 -0600 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2012-03-09 13:26:42 -0600 |
commit | 4b20d72a991cfebaf5765fe7756190f4a9645a3b (patch) | |
tree | 33c301d06d4cdcc000d8a7281e2cce8479ea00e9 /indra/newview/lldynamictexture.cpp | |
parent | 739532ee4ffdd58f9d0999901340d5476533fec2 (diff) | |
parent | e496796afba46c8f7be1d051cf48bdd667525bb1 (diff) |
merge
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; } |