From 3ef798f18244e468fd558f36e161aeaf15a44564 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Fri, 15 Nov 2013 15:21:36 +0200 Subject: Initialization for depth texture Precaution for using depth texture before nothing has been drawn. Task-number: QTRD-2570 Change-Id: I47ece387542acbd1ffed8d650a70ecc471efb30e Reviewed-by: Miikka Heikkinen --- src/datavisualization/utils/texturehelper.cpp | 19 ++++++++++++++++++- src/datavisualization/utils/texturehelper_p.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/datavisualization/utils') diff --git a/src/datavisualization/utils/texturehelper.cpp b/src/datavisualization/utils/texturehelper.cpp index cb18fcc2..41c5b452 100644 --- a/src/datavisualization/utils/texturehelper.cpp +++ b/src/datavisualization/utils/texturehelper.cpp @@ -182,7 +182,7 @@ GLuint TextureHelper::createDepthTexture(const QSize &size, GLuint textureSize) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_COMPARE_R_TO_TEXTURE_ARB); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size.width() * textureSize, - size.height() * textureSize, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL); + size.height() * textureSize, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); glBindTexture(GL_TEXTURE_2D, 0); return depthtextureid; @@ -219,6 +219,23 @@ GLuint TextureHelper::createDepthTextureFrameBuffer(const QSize &size, GLuint &f } #endif +#if !defined(QT_OPENGL_ES_2) +void TextureHelper::fillDepthTexture(GLuint texture,const QSize &size, GLuint textureSize, GLfloat value) +{ + int nItems = size.width() * textureSize * size.height() * textureSize; + GLfloat *bits = new GLfloat[nItems]; + for (int i = 0; i < nItems; i++) + bits[i] = value; + + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, size.width() * textureSize, + size.height() * textureSize, 0, GL_DEPTH_COMPONENT, GL_FLOAT, bits); + glBindTexture(GL_TEXTURE_2D, 0); + + delete[] bits; +} +#endif + void TextureHelper::deleteTexture(const GLuint *texture) { glDeleteTextures(1, texture); diff --git a/src/datavisualization/utils/texturehelper_p.h b/src/datavisualization/utils/texturehelper_p.h index 84570a13..11022495 100644 --- a/src/datavisualization/utils/texturehelper_p.h +++ b/src/datavisualization/utils/texturehelper_p.h @@ -53,6 +53,7 @@ class TextureHelper : protected QOpenGLFunctions GLuint createDepthTexture(const QSize &size, GLuint textureSize); // Returns depth texture and inserts generated framebuffer to parameter GLuint createDepthTextureFrameBuffer(const QSize &size, GLuint &frameBuffer, GLuint textureSize); + void fillDepthTexture(GLuint texture, const QSize &size, GLuint textureSize, GLfloat value); #endif void deleteTexture(const GLuint *texture); -- cgit v1.2.3