changer la couleur d'un sommet dans un vertex shader
Est-il possible de définir la couleur d'un seul sommet à l'aide d'un vertex shader GLSL programme, de la même manière que gl_Position modifie la position d'un sommet ?
Qui OpenGL version utilisez-vous? Toujours n'oubliez pas de l'expliquer.
GL_ARB_shading_language_100 extension
La version d'OpenGL, pas le shader version.
OpenGL version 1.5
GL_ARB_shading_language_100 extension
La version d'OpenGL, pas le shader version.
OpenGL version 1.5
OriginalL'auteur Franck Freiburger | 2010-03-31
Vous devez vous connecter pour publier un commentaire.
Pour les versions de GLSL, avant la version 1.30, vous voulez écrire à la
gl_FrontColor
ougl_BackColor
built-ins, qui sont varyings accessible dans le vertex shader. Lisez à propos de varyings dans le GLSL 1.10 spécification (http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.10.59.pdf) pour en savoir plus sur eux, ou le GL_ARB_vertex_shader extension de la spécification.gl_FrontColor
etgl_BackColor
sont 4D RGBA vecteurs qui prennent normalisé à virgule flottante scalaires.Mais ce sera mis en tous les sommets de rouge, pas seulement un sommet. C'est parce que le même vertex shader est exécuté pour tous les sommets. Si vous souhaitez définir des couleurs, l'utilisation
glColorPointer
avecglDrawArrays
,glDrawElements
,glDrawRangeElements
ouglMultiDrawElements
. Le sommet de la couleur définie parglColorPointer
peut être lu commegl_Color
dans le vertex shader.gl_Color
dans le vertex shader est un per-vertex attribut.À lire la couleur que vous avez écrit dans le vertex shader, dans le fragment shader, lire la intégré dans divers
gl_Color
. Fini les fragments doivent être écrits surgl_FragColor
.Vertex shader exemple:
Fragment shader exemple:
Aussi, à faire le vertex shader définir la varyings tout comme l'OpenGL fixe en fonction de canalisation, appelez la fonction ftransform().
err, gl_Position ensemble du fragment shader ? glColor plutôt que gl_Color ? ftransform par lui-même, sans réglage de gl_Position ?
C'est corrigé 🙂
Dans le fragment shader, il convient de: gl_FragColor = gl_Color; pas gl_FragColor = glColor;
correction: c'est gl_ModelViewProjectionMatrix pas gl_ModelviewProjectionMatrix (en majuscule V) dans le Vertex Shader et gl_Color pas glColor dans le Fragment Shader
OriginalL'auteur