diff options
author | Tom Cooksey <thomas.cooksey@nokia.com> | 2009-04-17 09:18:21 (GMT) |
---|---|---|
committer | Tom Cooksey <thomas.cooksey@nokia.com> | 2009-04-17 09:18:21 (GMT) |
commit | 534f2575a19422cff06e27b46f65c6630da6ee7f (patch) | |
tree | f1dbfca903ea539808a8a52385c1b45dbfbef140 /src/opengl/gl2paintengineex/qglengineshadermanager.cpp | |
parent | 0b37db60b856fd146727eb621c5447aff09ffc5a (diff) | |
download | Qt-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.cpp | 26 |
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() |