没有属性的顶点着色器

时间:2013-09-18 07:46:04

标签: opengl-es opengl-es-2.0 glsl glsles opengl-es-3.0

我们可以使用没有属性的vert着色器吗?

#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;
}

1 个答案:

答案 0 :(得分:2)

从技术上讲,规范中没有任何内容实际上要求您拥有顶点属性。但出于同样的原因,在OpenGL ES 3.0中,无论您是否需要,都有两个本质定义的in属性:

  

用于与固定功能通信的内置顶点着色器变量在顶点语言中本质上声明如下:

in highp int gl_VertexID;
in highp int gl_InstanceID;

这实际上是唯一一次没有任何属性。您可以根据gl_VertexIDgl_InstanceID或两者的某种组合动态计算排名,这是OpenGL ES 2.0的重大变化。