我正在尝试为骨骼动画编写着色器。它在我的桌面上编译并运行良好,它有一个GeForce 560Ti。但是,在我的笔记本电脑(650M)上,任何带有该行的着色器:
in vec4 boneWeight[4];
无法编译,错误:
Vertex/perfragskel.vert: ERROR: 4:1: 'attribute 4-component vector of float' : cannot declare arrays of this qualifier
我已经看到它写在不同的地方,数组属性是和不允许的。 代码应该编译,还是我的旧编译器过于宽松?我需要设置什么才能使它工作?我正在使用opengl 3.0渲染上下文。下面是一个最小的例子。
#version 130
in vec4 boneWeight[4];//MAX_BONES/4];
void main(void)
{
gl_Position = vec4(0,0,0,0);
}
答案 0 :(得分:3)
我为你做了一些挖掘,发现了这个方便的信息......
顶点着色器输入变量(或属性)接收每顶点数据。它们在顶点着色器中使用in限定符或不推荐使用的属性限定符声明。在顶点着色器中使用质心是一个错误。复制的值由OpenGL API建立。在非顶点着色器中使用属性是错误的。顶点着色器输入只能是浮点,浮点矢量,矩阵,有符号和无符号整数以及整数向量。 它们不能是数组或结构。
顶点着色器输入变量(或属性)接收每顶点数据。它们在顶点着色器中使用in限定符或不推荐使用的属性限定符声明。在顶点着色器输入中使用质心或插值限定符是错误的。复制的值由OpenGL API建立。在非顶点着色器中使用属性是错误的。顶点着色器输入只能是浮点,浮点矢量,矩阵,有符号和无符号整数以及整数向量。顶点着色器输入 也可以构成这些类型的数组 , 但不是结构。
需要拍摄桌面的GLSL编译器。它没有正确地遵守#version 130
指令。要在您的笔记本电脑上修复此问题,该笔记本电脑似乎具有符合标准的编译器,您只需将着色器从130升级到#version 150