182 |
182 |
183 simpleShaderProg = new QGLShaderProgram(context, this); |
183 simpleShaderProg = new QGLShaderProgram(context, this); |
184 simpleShaderProg->addShader(vertexShader); |
184 simpleShaderProg->addShader(vertexShader); |
185 simpleShaderProg->addShader(fragShader); |
185 simpleShaderProg->addShader(fragShader); |
186 simpleShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR); |
186 simpleShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR); |
|
187 simpleShaderProg->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR); |
|
188 simpleShaderProg->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR); |
|
189 simpleShaderProg->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR); |
187 simpleShaderProg->link(); |
190 simpleShaderProg->link(); |
188 if (!simpleShaderProg->isLinked()) { |
191 if (!simpleShaderProg->isLinked()) { |
189 qCritical() << "Errors linking simple shader:" |
192 qCritical() << "Errors linking simple shader:" |
190 << simpleShaderProg->log(); |
193 << simpleShaderProg->log(); |
191 } |
194 } |
322 newProg->program->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR); |
325 newProg->program->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR); |
323 if (newProg->useTextureCoords) |
326 if (newProg->useTextureCoords) |
324 newProg->program->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR); |
327 newProg->program->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR); |
325 if (newProg->useOpacityAttribute) |
328 if (newProg->useOpacityAttribute) |
326 newProg->program->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR); |
329 newProg->program->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR); |
|
330 if (newProg->usePmvMatrix) { |
|
331 newProg->program->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR); |
|
332 newProg->program->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR); |
|
333 newProg->program->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR); |
|
334 } |
327 |
335 |
328 newProg->program->link(); |
336 newProg->program->link(); |
329 if (!newProg->program->isLinked()) { |
337 if (!newProg->program->isLinked()) { |
330 QLatin1String none("none"); |
338 QLatin1String none("none"); |
331 QLatin1String br("\n"); |
339 QLatin1String br("\n"); |
741 } else { |
748 } else { |
742 requiredProgram.mainVertexShader = QGLEngineSharedShaders::MainVertexShader; |
749 requiredProgram.mainVertexShader = QGLEngineSharedShaders::MainVertexShader; |
743 } |
750 } |
744 requiredProgram.useTextureCoords = texCoords; |
751 requiredProgram.useTextureCoords = texCoords; |
745 requiredProgram.useOpacityAttribute = (opacityMode == AttributeOpacity); |
752 requiredProgram.useOpacityAttribute = (opacityMode == AttributeOpacity); |
|
753 requiredProgram.usePmvMatrix = true; |
746 |
754 |
747 // At this point, requiredProgram is fully populated so try to find the program in the cache |
755 // At this point, requiredProgram is fully populated so try to find the program in the cache |
748 currentShaderProg = sharedShaders->findProgramInCache(requiredProgram); |
756 currentShaderProg = sharedShaders->findProgramInCache(requiredProgram); |
749 |
757 |
750 if (currentShaderProg) { |
758 if (currentShaderProg) { |