diff --git a/source/Irrlicht/COpenGLDriver.cpp b/source/Irrlicht/COpenGLDriver.cpp index 51c1a7f7..1caa9c6f 100644 --- a/source/Irrlicht/COpenGLDriver.cpp +++ b/source/Irrlicht/COpenGLDriver.cpp @@ -4707,6 +4707,27 @@ GLenum COpenGLDriver::getGLBlend(E_BLEND_FACTOR factor) const return r; } +GLenum COpenGLDriver::getZBufferBits() const +{ + GLenum bits = 0; + switch (Params.ZBufferBits) + { + case 16: + bits = GL_DEPTH_COMPONENT16; + break; + case 24: + bits = GL_DEPTH_COMPONENT24; + break; + case 32: + bits = GL_DEPTH_COMPONENT32; + break; + default: + bits = GL_DEPTH_COMPONENT; + break; + } + return bits; +} + #ifdef _IRR_COMPILE_WITH_CG_ const CGcontext& COpenGLDriver::getCgContext() { diff --git a/source/Irrlicht/COpenGLDriver.h b/source/Irrlicht/COpenGLDriver.h index 8a6b2b69..693052cf 100644 --- a/source/Irrlicht/COpenGLDriver.h +++ b/source/Irrlicht/COpenGLDriver.h @@ -402,6 +402,9 @@ namespace video //! Convert E_BLEND_FACTOR to OpenGL equivalent GLenum getGLBlend(E_BLEND_FACTOR factor) const; + //! Get ZBuffer bits. + GLenum getZBufferBits() const; + //! Get Cg context #ifdef _IRR_COMPILE_WITH_CG_ const CGcontext& getCgContext(); diff --git a/source/Irrlicht/COpenGLTexture.cpp b/source/Irrlicht/COpenGLTexture.cpp index 1b6e59f9..3cc41c09 100644 --- a/source/Irrlicht/COpenGLTexture.cpp +++ b/source/Irrlicht/COpenGLTexture.cpp @@ -797,7 +797,7 @@ COpenGLFBODepthTexture::COpenGLFBODepthTexture( #endif { // generate depth texture - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, ImageSize.Width, + glTexImage2D(GL_TEXTURE_2D, 0, Driver->getZBufferBits(), ImageSize.Width, ImageSize.Height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0); // generate stencil texture @@ -817,7 +817,7 @@ COpenGLFBODepthTexture::COpenGLFBODepthTexture( Driver->extGlGenRenderbuffers(1, &DepthRenderBuffer); Driver->extGlBindRenderbuffer(GL_RENDERBUFFER_EXT, DepthRenderBuffer); Driver->extGlRenderbufferStorage(GL_RENDERBUFFER_EXT, - GL_DEPTH_COMPONENT, ImageSize.Width, + Driver->getZBufferBits(), ImageSize.Width, ImageSize.Height); } #endif