2013-11-02 144 views
4

我想着色3个圆圈,但只有3个白色圆圈出现。在这个例子中n是3。每个顶点有5个点,2位和3色OpenGL 3.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

实际上,您发布的部件到目前为止对我来说看起来还不错。你可以在创建顶点数组的地方发布代码并创建/填充缓冲区吗? – derhass

+1

我忘了在分片着色器中分号和颜色vecs ...现在已经看了几个小时了。感谢您看看 –

+0

哦。我也错过了... – derhass

回答

1

(张贴在评论的解决方案,使这一问题的回答。)

你是这两行的末尾缺少一个分号:

layout(location = 1) in vec3 color 
out vec3 Color 

今后,使用glGetShaderGL_COMPILE_STATUS后编译着色器以检查编译是否成功,并glGetShaderInfoLog检索确切的错误和警告。有关更多详细信息和代码示例,请参阅Shader Compilation

相关问题