Question

Est-il possible de définir la couleur d'un seul sommet à l'aide d'un programme de vertex shader GLSL, de la même manière que gl_Position change la position d'un sommet?

Était-ce utile?

La solution

Pour les versions de GLSL version antérieure 1.30, vous voulez écrire au gl_FrontColor ou gl_BackColor Encastrements, qui sont accessibles varyings dans le vertex shader. Lisez à propos varyings dans le GLSL 1.10 spécification ( http: // www .opengl.org / registre / doc / GLSLangSpec.Full.1.10.59.pdf ) pour en savoir plus sur eux, ou la spécification d'extension GL_ARB_vertex_shader.

gl_FrontColor et gl_BackColor sont des vecteurs de RVBA 4D qui prennent normalisées scalaires en virgule flottante.

Mais cela va créer tous les sommets au rouge, non seulement un sommet. En effet, le même vertex shader est exécuté pour tous les sommets. Si vous souhaitez définir des couleurs individuelles, utilisez glColorPointer avec glDrawArrays, glDrawElements, glDrawRangeElements ou glMultiDrawElements. La couleur de sommet défini par glColorPointer peut être lu comme gl_Color dans le vertex shader. gl_Color dans le vertex shader est un attribut par vertex.

Pour lire la couleur que vous avez écrit dans le vertex shader, dans le fragment shader, lisez intégré à différents gl_Color. fragments finis doivent être écrits sur gl_FragColor.

Vertex shader exemple:

void main()
{
    gl_FrontColor = gl_Color;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

Exemple de shader Fragment:

void main()
{
    gl_FragColor = gl_Color;
}

En outre, pour faire le vertex shader définir les varyings tout comme l'OpenGL pipeline à fonction fixe, appelez la fonction ftransform ().

void main()
{
    ftransform();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top