From d3f6754cffb993b154516afee2fc24db0b8dccf2 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Mon, 4 May 2015 15:40:17 +0600 Subject: [PATCH] Correct depth texture intarnal format for GLES3 --- src/DepthBuffer.cpp | 9 ++------- src/DepthBuffer.h | 9 +++++++++ src/FrameBuffer.cpp | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/DepthBuffer.cpp b/src/DepthBuffer.cpp index 933a1a12..50b630a0 100644 --- a/src/DepthBuffer.cpp +++ b/src/DepthBuffer.cpp @@ -120,11 +120,6 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture _pTexture->textureBytes = _pTexture->realWidth * _pTexture->realHeight * sizeof(float); textureCache().addFrameBufferTextureSize(_pTexture->textureBytes); -#ifndef GLES2 - const GLenum format = GL_DEPTH_COMPONENT; -#else - const GLenum format = GL_DEPTH_COMPONENT24_OES; -#endif if (_multisample) { glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, _pTexture->glName); #ifndef GLESX @@ -142,9 +137,9 @@ void DepthBuffer::_initDepthBufferTexture(FrameBuffer * _pBuffer, CachedTexture else { glBindTexture(GL_TEXTURE_2D, _pTexture->glName); if (_pBuffer != NULL) - glTexImage2D(GL_TEXTURE_2D, 0, format, _pBuffer->m_pTexture->realWidth, _pBuffer->m_pTexture->realHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, _pBuffer->m_pTexture->realWidth, _pBuffer->m_pTexture->realHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); else - glTexImage2D(GL_TEXTURE_2D, 0, format, video().getWidth(), video().getHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, video().getWidth(), video().getHeight(), 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); diff --git a/src/DepthBuffer.h b/src/DepthBuffer.h index 78fe678a..2df99937 100644 --- a/src/DepthBuffer.h +++ b/src/DepthBuffer.h @@ -71,4 +71,13 @@ extern const GLuint depthImageUnit; void DepthBuffer_Init(); void DepthBuffer_Destroy(); + +#ifdef GLES2 +#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT24_OES +#elif defined (GLES3) +#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT32F +#else +#define DEPTH_COMPONENT_FORMAT GL_DEPTH_COMPONENT +#endif + #endif diff --git a/src/FrameBuffer.cpp b/src/FrameBuffer.cpp index d6e0138d..682e8519 100644 --- a/src/FrameBuffer.cpp +++ b/src/FrameBuffer.cpp @@ -1045,7 +1045,7 @@ void DepthBufferToRDRAM::Init() glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); glBindTexture( GL_TEXTURE_2D, m_pDepthTexture->glName ); - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, m_pDepthTexture->realWidth, m_pDepthTexture->realHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); + glTexImage2D(GL_TEXTURE_2D, 0, DEPTH_COMPONENT_FORMAT, m_pDepthTexture->realWidth, m_pDepthTexture->realHeight, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );