2013-11-02 141 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

相關問題