Commit 0fd0e52e authored by hybrid's avatar hybrid

Reorganize the mrt reset procedure.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2916 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 2573257f
...@@ -106,6 +106,8 @@ namespace video ...@@ -106,6 +106,8 @@ namespace video
ERT_FRAME_BUFFER=0, ERT_FRAME_BUFFER=0,
//! Render target is a render texture //! Render target is a render texture
ERT_RENDER_TEXTURE, ERT_RENDER_TEXTURE,
//! Multi-Render target textures
ERT_MULTI_RENDER_TEXTURES,
//! Render target is the main color frame buffer //! Render target is the main color frame buffer
ERT_STEREO_LEFT_BUFFER, ERT_STEREO_LEFT_BUFFER,
//! Render target is the right color buffer (left is the main buffer) //! Render target is the right color buffer (left is the main buffer)
......
...@@ -3410,6 +3410,7 @@ bool COpenGLDriver::setRenderTarget(video::ITexture* texture, bool clearBackBuff ...@@ -3410,6 +3410,7 @@ bool COpenGLDriver::setRenderTarget(video::ITexture* texture, bool clearBackBuff
RenderTargetTexture = 0; RenderTargetTexture = 0;
CurrentRendertargetSize = core::dimension2d<u32>(0,0); CurrentRendertargetSize = core::dimension2d<u32>(0,0);
CurrentTarget=ERT_FRAME_BUFFER; CurrentTarget=ERT_FRAME_BUFFER;
glDrawBuffer(Doublebuffer?GL_BACK_LEFT:GL_FRONT_LEFT);
} }
clearBuffers(clearBackBuffer, clearZBuffer, false, color); clearBuffers(clearBackBuffer, clearZBuffer, false, color);
...@@ -3424,7 +3425,7 @@ bool COpenGLDriver::setRenderTarget(const core::array<video::IRenderTarget>& tar ...@@ -3424,7 +3425,7 @@ bool COpenGLDriver::setRenderTarget(const core::array<video::IRenderTarget>& tar
if (targets.size()==0) if (targets.size()==0)
return setRenderTarget(0, clearBackBuffer, clearZBuffer, color); return setRenderTarget(0, clearBackBuffer, clearZBuffer, color);
u32 maxMultipleRTTs = core::min_(4u, targets.size()); u32 maxMultipleRTTs = core::min_(16u, targets.size());
// determine common size // determine common size
core::dimension2du rttSize = CurrentRendertargetSize; core::dimension2du rttSize = CurrentRendertargetSize;
...@@ -3486,6 +3487,7 @@ bool COpenGLDriver::setRenderTarget(const core::array<video::IRenderTarget>& tar ...@@ -3486,6 +3487,7 @@ bool COpenGLDriver::setRenderTarget(const core::array<video::IRenderTarget>& tar
if (maxMultipleRTTs > 1) if (maxMultipleRTTs > 1)
{ {
CurrentTarget=ERT_MULTI_RENDER_TEXTURES;
core::array<GLenum> MRTs; core::array<GLenum> MRTs;
MRTs.set_used(maxMultipleRTTs); MRTs.set_used(maxMultipleRTTs);
for(u32 i = 0; i < maxMultipleRTTs; i++) for(u32 i = 0; i < maxMultipleRTTs; i++)
......
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