只有在片段着色器中定义时,OpenGL统一块才能在顶点着色器中工作。可分离的着色器程序

时间:2016-11-22 15:58:42

标签: c++ opengl graphics glsl shader

我在顶点着色器中定义了一个UBO,如下所示:

layout (std140) uniform matricesBuffer
{
    mat4 MVPMatrix;
    mat4 modelMatrix;
};

我花了很多时间弄清楚为什么我需要的矩阵没有通过。然后我将相同的统一块添加到片段着色器中,它神奇地工作。所以我的问题是,我知道在管道中使用可分离的着色器时,有关于着色器程序/阶段之间的接口匹配的规范,但是从我读过的这些只描述输入和输出变量,但这个统一的块,或者UBO它当我将UBO链接到该绑定点时,应该只能从顶点着色器访问它。我对此感到困惑,任何信息都将不胜感激。

编辑:我一直在尝试一些事情,只是:

layout (std140) uniform anyName
{
    mat4 worldMatrix;
};
片段着色器中的

使其工作。如果我将“anyName”更改为某些名称,它可以工作也可以不工作。例如,如果它以字母R开头它不起作用,那么它工作的大多数其他字母。很困惑。

0 个答案:

没有答案