Comment obtenir les coordonnées de texture à GLSL dans la version 150?
En GLSL version 110 je peux obtenir de coordonner la gl_TexCoord[] mais elle est déconseillée dans les 150.
Code 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();
Code Du 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;
}
FRAGMENT:
#version 150
in vec2 tex_coord;
out vec4 frgcolor;
void main()
{
frgcolor = vec4( tex_coord, 0.0, 1.0);
}
écran final est d'un rouge quad.
Comment passer des coordonnées de texture à shader? ou mon code est faux?
OriginalL'auteur g.Eis | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
Si vous ne souhaitez pas utiliser les méthodes obsolètes, vous devrez cesser d'utiliser glTexCoord2f, et l'utilisation d'un attribut personnalisé.
Si vous voulez rester en mode immédiat, vous allez utiliser glVertexAttrib2f.
Vous couplez cela avec votre nouvelle variable 'in_coord" par quering l'index après shader liens:
Si vous souhaitez utiliser VA/VBO au lieu de cela, les fonctions que vous utilisez à la place est glEnableVertexAttribArray/glVertexAttribPointer
"Si vous voulez rester en mode immédiat, vous allez utiliser glVertexAttrib2f. "La mode est aussi supprimé (ou "obsolète" si vous préférez), donc il n'y a pas vraiment d'intérêt. Soit vous utilisez supprimé des trucs ou vous ne l'êtes pas; il n'y a aucune raison de le faire à moitié.
Je sais que c'est un très vieux thread mais je voulais juste signaler qu'il y a une différence entre obsolète et enlevé.
Salut! Aucune solution de contournement en 2D filtres?
OriginalL'auteur Tim
dans votre cas, il suffit de regarder dans
gl_TexCoord[0]
dans votre vertex shader. Fonctionne avec shader model de 1,5en C++:
dans le vertex shader:
dans le fragment shader:
OriginalL'auteur ChatCloud