[solved] GLSL: Drawelements und Texturen
Verfasst: 18.07.2011, 12:15
Hallo...
also langsam bin ich am Verzweifeln.
Ich möchte per "glDrawElements" Geometrie zeichnen und textuieren.
Leider funktioniert das textuieren nicht so wie es soll wenn ich Shader verwende.
Ich poste mal einfach etwas Code
Die Renderfunktion:
Vertexshader:
Fragmentshader:
Es sieht für mich so aus, als ob er das erste Texel (oder irgend ein anderes) nimmt, und diese Farbe für jedes Fragement nimmt.
Mach ich irgend etwas falsch bei dieser Verwendung?
Gruß joggel
also langsam bin ich am Verzweifeln.
Ich möchte per "glDrawElements" Geometrie zeichnen und textuieren.
Leider funktioniert das textuieren nicht so wie es soll wenn ich Shader verwende.
Ich poste mal einfach etwas Code
Die Renderfunktion:
Code: Alles auswählen
this->useShaderEffect(true); // Wenn ich dies ausschalte, also die FFP benutze, wird die Texture normal verwendet und alles läuft wie es soll.
glEnable( GL_TEXTURE_2D );
glBindTexture( GL_TEXTURE_2D, mTexture);
glClientActiveTexture(GL_TEXTURE0 + 0);
mShaderProgram.setUniformValue("colorTexture0",mTexture);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3,GL_FLOAT,sizeof(Mesh::Vertex),&mVertexBuffer[0]);
glEnableClientState(GL_NORMAL_ARRAY);
glTexCoordPointer(2,GL_FLOAT,sizeof(Mesh::Vertex),&mVertexBuffer[0].mNx);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glNormalPointer(GL_FLOAT,sizeof(Mesh::Vertex),&mVertexBuffer[0].mU);
glDrawElements(GL_TRIANGLES, mIndices.size(), GL_UNSIGNED_INT, &mIndices[0]);
glPopMatrix();
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
Code: Alles auswählen
//uniform sampler2D colorTexture0;
void main(void)
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
Code: Alles auswählen
uniform sampler2D colorTexture0;
vec4 colTemp;
void main(void)
{
colTemp = texture2D( colorTexture0, gl_TexCoord[0].st);
gl_FragColor = colTemp;
}
Mach ich irgend etwas falsch bei dieser Verwendung?
Gruß joggel