From 0fd0e52e7e098db99bcd6fafb676cd99923d5bb9 Mon Sep 17 00:00:00 2001 From: hybrid Date: Sun, 22 Nov 2009 23:03:04 +0000 Subject: [PATCH] Reorganize the mrt reset procedure. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2916 dfc29bdd-3216-0410-991c-e03cc46cb475 --- include/IVideoDriver.h | 2 ++ source/Irrlicht/COpenGLDriver.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/IVideoDriver.h b/include/IVideoDriver.h index 11093f10..fc62a6ec 100644 --- a/include/IVideoDriver.h +++ b/include/IVideoDriver.h @@ -106,6 +106,8 @@ namespace video ERT_FRAME_BUFFER=0, //! Render target is a render texture ERT_RENDER_TEXTURE, + //! Multi-Render target textures + ERT_MULTI_RENDER_TEXTURES, //! Render target is the main color frame buffer ERT_STEREO_LEFT_BUFFER, //! Render target is the right color buffer (left is the main buffer) diff --git a/source/Irrlicht/COpenGLDriver.cpp b/source/Irrlicht/COpenGLDriver.cpp index e29396eb..14d19314 100644 --- a/source/Irrlicht/COpenGLDriver.cpp +++ b/source/Irrlicht/COpenGLDriver.cpp @@ -3410,6 +3410,7 @@ bool COpenGLDriver::setRenderTarget(video::ITexture* texture, bool clearBackBuff RenderTargetTexture = 0; CurrentRendertargetSize = core::dimension2d(0,0); CurrentTarget=ERT_FRAME_BUFFER; + glDrawBuffer(Doublebuffer?GL_BACK_LEFT:GL_FRONT_LEFT); } clearBuffers(clearBackBuffer, clearZBuffer, false, color); @@ -3424,7 +3425,7 @@ bool COpenGLDriver::setRenderTarget(const core::array& tar if (targets.size()==0) return setRenderTarget(0, clearBackBuffer, clearZBuffer, color); - u32 maxMultipleRTTs = core::min_(4u, targets.size()); + u32 maxMultipleRTTs = core::min_(16u, targets.size()); // determine common size core::dimension2du rttSize = CurrentRendertargetSize; @@ -3486,6 +3487,7 @@ bool COpenGLDriver::setRenderTarget(const core::array& tar if (maxMultipleRTTs > 1) { + CurrentTarget=ERT_MULTI_RENDER_TEXTURES; core::array MRTs; MRTs.set_used(maxMultipleRTTs); for(u32 i = 0; i < maxMultipleRTTs; i++)