我们可以在GLSL-ES中使用结构制服吗?

时间:2016-04-25 22:21:24

标签: opengl-es

我正在尝试在ES中的顶点着色器中使用结构体制结构:

    struct temp{
        mat4 mvp;
    };
    uniform temp MP;
    in vec2 inPos;
    void main() {
         vec4 vert = MP.mvp * vec4(inPos.x,inPos.y,0,1);

        gl_Position = vert;
}
glGetUniformLocation(program, "MP.mvp");

它不会在屏幕上显示任何内容,也不会显示任何内容。它是否允许在glsl es 300?

适用于OpenGL。

1 个答案:

答案 0 :(得分:1)

The OpenGL ES Shading Language v3.00开始,在4.3.5 Uniform Variables部分中说明:

  

统一限定符可以与任何基本数据类型一起使用,或者在声明类型为结构的变量或其中任何一个的数组时使用。

如果glGetUniformLocation(program, "MP.mvp")返回0或更高,那么您目前分享的内容看起来是合法的。您可能需要发布更多代码才能找到它的底部。

如果你的结构中只有mat4,那么我建议你完全删除这个结构。