2

我们可以有没有属性的垂直着色器吗?

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

1 回答 1

2

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

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

in highp int gl_VertexID;
in highp int gl_InstanceID;

这确实是唯一一次实际上没有任何属性是有意义的。您可以基于 或两者的某种组合动态计算位置gl_VertexIDgl_InstanceID这是 OpenGL ES 2.0 的一个重大变化。

于 2013-09-18T08:10:33.670 回答