3 votes

vertex shader sans attributs

Peut-on avoir un vert shader sans attributs ?

#version 300 es
out mediump vec4 basecolor;

uniform ivec2 x1;

void main(void)
{
        if(x1 == ivec2(10,20))
                basecolor = vec4(0.0, 1.0, 0.0, 1.0);
        else
              basecolor = vec4(1.0, 0.0, 1.0, 1.0);

        gl_PointSize = 64.0;
        gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
}

#version 300 es
in mediump vec4 basecolor;

out vec4 FragColor;
void main(void)
{
        FragColor =  basecolor;
}

3voto

Andon M. Coleman Points 20258

Techniquement, rien dans la spécification ne vous oblige à avoir des attributs de vertex. Mais de la même manière, dans OpenGL ES 3.0, vous disposez de deux attributs de vertex intrinsèquement définis. in attributs, que vous les vouliez ou non :

Les variables du vertex shader intégrées pour communiquer avec la fonctionnalité fixe sont intrinsèquement déclarées comme suit dans le langage des vertex :

in highp int gl_VertexID;
in highp int gl_InstanceID;

C'est vraiment le seul moment où il est logique de ne pas avoir d'attributs. Vous pouvez calculer dynamiquement la position en fonction de gl_VertexID , gl_InstanceID ou une combinaison des deux, ce qui constitue un changement majeur par rapport à OpenGL ES 2.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X