In GLSL Version 110 i [] in gl_TexCoord koordinieren lassen können, aber es in 150Wie Textur-Koordinate zu GLSL in Version 150 erhalten?
OpenGL-Code veraltet ist:
shader.setupShaderFromFile(GL_VERTEX_SHADER, "t.vert");
shader.setupShaderFromFile(GL_FRAGMENT_SHADER, "t.frag");
shader.linkProgram();
glGetFloatv(GL_MODELVIEW_MATRIX, modelview_mat_);
glGetFloatv(GL_PROJECTION_MATRIX, projectionview_mat_);
shader.begin();
glUniformMatrix4fv(glGetUniformLocation(shader.getProgram(), "MVMatrix"), 1, GL_FALSE, modelview_mat_);
glUniformMatrix4fv(glGetUniformLocation(shader.getProgram(), "MPMatrix"), 1, GL_FALSE, projectionview_mat_);
glBegin(GL_QUADS);
glTexCoord2f(0, 0);glVertex2f(0, 0);
glTexCoord2f(1, 0);glVertex2f(100, 0);
glTexCoord2f(1, 1);glVertex2f(100, 100);
glTexCoord2f(0, 1);glVertex2f(0, 100);
glEnd();
shader.end();
Shader-Code:
Vertex-
#version 150
in vec3 in_vertex;
in vec2 in_coord;
uniform mat4 MVMatrix;
uniform mat4 MPMatrix;
out vec2 tex_coord;
void main()
{
vec4 v = vec4(in_vertex, 1.0);
tex_coord = in_coord;
gl_Position = MPMatrix * MVMatrix * v;
}
FRAGMENT:
#version 150
in vec2 tex_coord;
out vec4 frgcolor;
void main()
{
frgcolor = vec4(tex_coord, 0.0, 1.0);
}
letzte Bildschirm ist ein rotes Viereck.
Wie Textur Koordinate an Shader übergeben? oder mein Code ist falsch?
TKS, gelöst, die alle benutzerdefinierten ... –
"Wenn Sie im Sofortmodus bleiben möchten, verwenden Sie glVertexAttrib2f." Der Sofortmodus wird * ebenfalls * entfernt (oder "veraltet", wenn Sie bevorzugen), also ist es wirklich sinnlos. Entweder du benutzt entfernte Sachen oder du bist nicht; Es gibt keinen Grund, es auf halbem Wege zu machen. –
Ich weiß, das ist ein sehr alter Thread, aber ich wollte nur darauf hinweisen, dass es einen Unterschied zwischen veraltet und entfernt gibt. – MJLaukala