summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarko A. Niemelä <marko.a.niemela@nokia.com>2011-05-05 10:32:43 +0300
committerMarko A. Niemelä <marko.a.niemela@nokia.com>2011-05-05 10:32:43 +0300
commit95bf7ebfcd7892d1f03bf34f1d2e9dc0fe9a4297 (patch)
tree06ded964e28382e7ab9e965b93d398ec383de5c2
parent7f26ff248ad0ef70f2af852ab25eaf18f0b7143b (diff)
Fix to avoid depth test when possible
-rw-r--r--src/shadereffectitem.cpp22
-rw-r--r--src/shadereffectitem.h1
2 files changed, 16 insertions, 7 deletions
diff --git a/src/shadereffectitem.cpp b/src/shadereffectitem.cpp
index 64b59bd..4d09327 100644
--- a/src/shadereffectitem.cpp
+++ b/src/shadereffectitem.cpp
@@ -211,6 +211,7 @@ ShaderEffectItem::ShaderEffectItem(QDeclarativeItem *parent)
, m_checkedViewportUpdateMode(false)
, m_checkedOpenGL(false)
, m_mirrored(false)
+ , m_defaultVertexShader(true)
{
setFlag(QGraphicsItem::ItemHasNoContents, false);
connect(this, SIGNAL(visibleChanged()), this, SLOT(handleVisibilityChange()));
@@ -288,6 +289,7 @@ void ShaderEffectItem::setVertexShader(const QString &code)
return;
m_vertex_code = code;
+ m_defaultVertexShader = false;
if (isComponentComplete()) {
reset();
updateProperties();
@@ -423,16 +425,22 @@ void ShaderEffectItem::renderEffect(QPainter *painter, const QMatrix4x4 &matrix)
bindGeometry();
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_GREATER);
- glDepthMask(true);
+ // Optimization, disable depth test when we know we don't need it.
+ if (m_defaultVertexShader) {
+ glDepthMask(false);
+ glDisable(GL_DEPTH_TEST);
+ } else {
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_GREATER);
+ glDepthMask(true);
#if defined(QT_OPENGL_ES)
- glClearDepthf(0);
+ glClearDepthf(0);
#else
- glClearDepth(0);
+ glClearDepth(0);
#endif
- glClearColor(0, 0, 0, 0);
- glClear(GL_DEPTH_BUFFER_BIT);
+ glClearColor(0, 0, 0, 0);
+ glClear(GL_DEPTH_BUFFER_BIT);
+ }
if (m_blending){
glEnable(GL_BLEND);
diff --git a/src/shadereffectitem.h b/src/shadereffectitem.h
index d1f9fd4..83fbaea 100644
--- a/src/shadereffectitem.h
+++ b/src/shadereffectitem.h
@@ -140,6 +140,7 @@ private:
bool m_checkedViewportUpdateMode : 1;
bool m_checkedOpenGL : 1;
bool m_mirrored : 1;
+ bool m_defaultVertexShader : 1;
};
QT_END_HEADER