我正在尝试为3个圆圈着色,但只出现3个白色圆圈。在这个例子中,n是3。每个顶点有5个点,2个用于位置,3个用于颜色
以下是我认为可能存在问题的地方:
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0,
2,
GL_FLOAT,
GL_FALSE,
5*sizeof(float),
(void*)0
);
glEnableVertexAttribArray(1);
glVertexAttribPointer(
1,
3,
GL_FLOAT,
GL_FALSE,
5*sizeof(float),
(void*)(2*sizeof(float))
);
glDrawElements(GL_TRIANGLES, 20 * 3 * n, GL_UNSIGNED_INT, 0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
我的着色器:
#version 330 core
in vec3 Color;
out vec4 outColor;
void main()
{
outColor = vec4(Color, 1.0);
}
#version 330 core
layout(location = 0) in vec2 position;
layout(location = 1) in vec3 color
out vec3 Color
void main(){
gl_Position = vec4(position, 0.0, 1.0);
Color = color;
}
谢谢你看看 安迪
编辑:
layout(location = 1) in vec3 color
out vec3 Color
layout(location = 1) in vec3 color;
out vec3 Color;
答案 0 :(得分:1)
(从评论中发布解决方案以回答此问题。)
在这两行的末尾你缺少一个分号:
layout(location = 1) in vec3 color
out vec3 Color
将来,在编译着色器后使用glGetShader
和GL_COMPILE_STATUS
检查编译是否成功,并glGetShaderInfoLog
检索确切的错误和警告。有关详细信息和代码示例,请参阅Shader Compilation。