En la versión GLSL 110 que puedo conseguir de coordenadas en gl_TexCoord [] pero está desfasada y en su código 150.¿Cómo obtener coordenadas de textura para GLSL en la versión 150?
OpenGL:
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();
Código Shader:
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;
}
FRAGMENTO:
#version 150
in vec2 tex_coord;
out vec4 frgcolor;
void main()
{
frgcolor = vec4(tex_coord, 0.0, 1.0);
}
pantalla final es un quad rojo.
¿Cómo pasar la coordenada de textura al sombreador? o mi código es incorrecto?
TKS, solucionado, todo a definido por el usuario ... –
"Si desea permanecer en el modo inmediato, usará glVertexAttrib2f." El modo inmediato es * también * eliminado (o "obsoleto" si lo prefiere), así que realmente no tiene sentido. O estás usando material eliminado o no lo estás haciendo; no hay razón para hacerlo a mitad de camino. –
Sé que este es un hilo muy antiguo, pero solo quería señalar que existe una diferencia entre obsoleto y eliminado. – MJLaukala