summaryrefslogtreecommitdiffstats
path: root/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
diff options
context:
space:
mode:
authorTom Cooksey <thomas.cooksey@nokia.com>2009-04-17 09:18:21 (GMT)
committerTom Cooksey <thomas.cooksey@nokia.com>2009-04-17 09:18:21 (GMT)
commit534f2575a19422cff06e27b46f65c6630da6ee7f (patch)
treef1dbfca903ea539808a8a52385c1b45dbfbef140 /src/opengl/gl2paintengineex/qglengineshadermanager.cpp
parent0b37db60b856fd146727eb621c5447aff09ffc5a (diff)
downloadQt-534f2575a19422cff06e27b46f65c6630da6ee7f.zip
Qt-534f2575a19422cff06e27b46f65c6630da6ee7f.tar.gz
Qt-534f2575a19422cff06e27b46f65c6630da6ee7f.tar.bz2
Add a "shocking pink" shader for rendering into stencil buff
If you see shocking pink in the rendering output, it's probably because the "simple" shader is in use but color writes have somehow been enabled. :-)
Diffstat (limited to 'src/opengl/gl2paintengineex/qglengineshadermanager.cpp')
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
index 1253414..7c165ae 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
@@ -111,6 +111,7 @@ QGLEngineShaderManager::QGLEngineShaderManager(QGLContext* context)
code[LinearGradientBrushSrcFragmentShader] = qglslLinearGradientBrushSrcFragmentShader;
code[RadialGradientBrushSrcFragmentShader] = qglslRadialGradientBrushSrcFragmentShader;
code[ConicalGradientBrushSrcFragmentShader] = qglslConicalGradientBrushSrcFragmentShader;
+ code[ShockingPinkSrcFragmentShader] = qglslShockingPinkSrcFragmentShader;
code[MaskFragmentShader] = qglslMaskFragmentShader;
code[RgbMaskFragmentShader] = ""; //###
@@ -131,12 +132,33 @@ QGLEngineShaderManager::QGLEngineShaderManager(QGLContext* context)
#if defined(QT_DEBUG)
// Check that all the elements have been filled:
for (int i = 0; i < TotalShaderCount; ++i) {
- if (qglEngineShaderSourceCode[i] == 0)
- qCritical() << "qglEngineShaderSourceCode: Missing shader in element" << i;
+ if (qglEngineShaderSourceCode[i] == 0) {
+ int enumIndex = staticMetaObject.indexOfEnumerator("ShaderName");
+ QMetaEnum m = staticMetaObject.enumerator(enumIndex);
+
+ qCritical() << "qglEngineShaderSourceCode: Source for" << m.valueToKey(i)
+ << "(shader" << i << ") missing!";
+ }
}
#endif
qglEngineShaderSourceCodePopulated = true;
}
+
+ // Compile up the simple shader:
+ simpleShaderProg = new QGLShaderProgram(ctx, this);
+ compileNamedShader(MainVertexShader, QGLShader::PartialVertexShader);
+ compileNamedShader(PositionOnlyVertexShader, QGLShader::PartialVertexShader);
+ compileNamedShader(MainFragmentShader, QGLShader::PartialFragmentShader);
+ compileNamedShader(ShockingPinkSrcFragmentShader, QGLShader::PartialFragmentShader);
+ simpleShaderProg->addShader(compiledShaders[MainVertexShader]);
+ simpleShaderProg->addShader(compiledShaders[PositionOnlyVertexShader]);
+ simpleShaderProg->addShader(compiledShaders[MainFragmentShader]);
+ simpleShaderProg->addShader(compiledShaders[ShockingPinkSrcFragmentShader]);
+ simpleShaderProg->link();
+ if (!simpleShaderProg->isValid()) {
+ qCritical() << "Errors linking simple shader:"
+ << simpleShaderProg->errors();
+ }
}
QGLEngineShaderManager::~QGLEngineShaderManager()