我正在学习 OpenGL 并尝试做一些简单的纹理。因此,我提供我的纹理坐标作为属性。
我的顶点着色器有一个奇怪的错误:
#version 150
in vec2 position;
in vec3 color;
in vec2 texcoord;
out vec3 Color;
out vec2 Texcoord;
void main()
{
Color = color;
Texcoord = vec2 (1.0, 0.5); /* just for debugging hardcode texcords */
gl_Position = vec4( position, 0.0, 1.0 );
}
着色器编译得很好,但是当我尝试链接着色器所属的程序时,glGetProgramInfoLog() 日志显示:
错误:编译的顶点着色器已损坏。
当我删除
in vec2 texcoord;
错误消失。我如何命名属性并不重要。一旦我添加第三个,我就会收到此错误。
没有编译错误。只是这个链接错误。
我在 OS X 10.8.3 上使用 OpenGL 3.2 核心上下文。我使用 GLEW。
更新:
现在我可以链接这个:
#version 150
in vec2 position;
in vec3 color;
in vec2 texcoord;
out vec3 Color;
out vec2 Texcoord;
void main()
{
Color = color;
gl_Position = vec4( position, 0.0, 1.0 );
}
但我一加
Texcoord = texcoord;
主函数着色器变得损坏。我很绝望。这是什么?