C++ 为什么GLGetAttributeLocation为两个不同的属性返回相同的值?
我是OpenGL的初学者,我写了一个顶点着色器,还做了其他事情,比如编译着色器 顶点着色器:C++ 为什么GLGetAttributeLocation为两个不同的属性返回相同的值?,c++,opengl,opengl-3,C++,Opengl,Opengl 3,我是OpenGL的初学者,我写了一个顶点着色器,还做了其他事情,比如编译着色器 顶点着色器: in vec4 vPosition; in vec4 vColor; out vec4 Color; void main(void){ gl_Position = vPosition; Color = vColor; } 在我用C++编写此代码之后: GLuint PositionID = glGetAttribLocation(SProgram, "vPosition"); GL
in vec4 vPosition;
in vec4 vColor;
out vec4 Color;
void main(void){
gl_Position = vPosition;
Color = vColor;
}
在我用C++编写此代码之后:
GLuint PositionID = glGetAttribLocation(SProgram, "vPosition");
GLuint ColorID = glGetAttribLocation(SProgram, "vColor");
cout << "vPosition location: " << PositionID << endl << "vColor location: " << ColorID << endl;
这是为什么?实际上的返回类型不是
GLuint
,而是GLint
(带符号)
所以4294967295
确实是-1
,这意味着某个地方发生了问题。原因可能有很多:
- 程序无效或链接不正确
- 属性未被使用
- 属性名称无效
vPosition location: 4294967295
vColor location: 4294967295