Reorganize the mrt reset procedure.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2916 dfc29bdd-3216-0410-991c-e03cc46cb475
master
hybrid 2009-11-22 23:03:04 +00:00
parent 2573257ffc
commit 0fd0e52e7e
2 changed files with 5 additions and 1 deletions

View File

@ -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)

View File

@ -3410,6 +3410,7 @@ bool COpenGLDriver::setRenderTarget(video::ITexture* texture, bool clearBackBuff
RenderTargetTexture = 0;
CurrentRendertargetSize = core::dimension2d<u32>(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<video::IRenderTarget>& 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<video::IRenderTarget>& tar
if (maxMultipleRTTs > 1)
{
CurrentTarget=ERT_MULTI_RENDER_TEXTURES;
core::array<GLenum> MRTs;
MRTs.set_used(maxMultipleRTTs);
for(u32 i = 0; i < maxMultipleRTTs; i++)