2013-11-02 5 views
4

3 개의 원을 색칠하려고하지만 3 개의 흰색 원만 나타납니다. 이 예제에서 n은 3입니다.OpenGL3.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; 
} 

감사를 살펴 을내어 각 정점은 내가 생각하는 곳

다음

이 문제가 거짓말을 할 수있다 5 점, 색상의 위치에 대해 2 단계와 3을 가지고 앤디

편집 :

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 

, 후 GL_COMPILE_STATUSglGetShader를 사용 셰이더를 컴파일하여 컴파일이 성공했는지 확인하고 glGetShaderInfoLog을 사용하여 정확한 오류 및 경고를 검색합니다. 자세한 내용 및 코드 샘플은 Shader Compilation을 참조하십시오.