我们可以拥有没有属性的垂直着色器吗?
#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;
}
最佳答案
从技术上讲,规范中没有任何内容实际要求您具有顶点属性。但出于同样的原因,在 OpenGL ES 3.0 中,无论您是否需要,您都有两个内在定义的 in
属性:
The built-in vertex shader variables for communicating with fixed functionality are intrinsically declared as follows in the vertex language:
in highp int gl_VertexID;
in highp int gl_InstanceID;
这真的是唯一一次没有任何属性才真正有意义。您可以根据 gl_VertexID
、gl_InstanceID
或两者的某种组合动态计算位置,这是 OpenGL ES 2.0 的重大变化。
https://stackoverflow.com/questions/18866538/