【问题标题】:vertex shader without attributes没有属性的顶点着色器
【发布时间】:2013-09-18 07:46:03
【问题描述】:

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

#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 的硬件平台?我真的很想尝试一下,因为它在某些方面终于接近了桌面 OpenGL 的能力水平。

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


【解决方案1】:

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

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

in highp int gl_VertexID;
in highp int gl_InstanceID;

这确实是唯一一次真正有意义的是没有任何属性。您可以根据gl_VertexIDgl_InstanceID 或两者的组合动态计算位置,这是 OpenGL ES 2.0 的一个重大变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2018-03-15
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多