我是OpenGL的初学者,我编写了一个顶点着色器并执行其他操作,例如编译着色器。
顶点着色器:
<user table>
|user_id | int (unique)
|name | int (ref to alias.alias_id)
<user_alias table>
|user_id | int (ref to user.user_id)
|alias_id | int (ref to alias.alias_id)
unique constraint (user_id, alias_id)
<alias table>
|alias_id | int (unique)
|alias | varchar
用C ++写这段代码之后:
in vec4 vPosition;
in vec4 vColor;
out vec4 Color;
void main(void){
gl_Position = vPosition;
Color = vColor;
}
结果非常有趣,两个相同的位置:
GLuint PositionID = glGetAttribLocation(SProgram, "vPosition");
GLuint ColorID = glGetAttribLocation(SProgram, "vColor");
cout << "vPosition location: " << PositionID << endl << "vColor location: " << ColorID << endl;
这是为什么?
答案 0 :(得分:5)
实际上glGetAttribLocation
的返回类型不是GLuint
而是GLint
(已签名)。
所以4294967295
确实是-1
,这意味着某个地方出现了问题。原因可能很多:
很难说出原因,因为我们无法猜测您的代码,但问题出在其他地方。