2010-03-04 4 views
6

많은 쉐이더를 GL_POINTS 및 GL_LINES를 많이 그리는 오래된 OpenGL 프로그램에 추가하려고합니다. 문제없이조각 쉐이더가있는 GLSL은 검정색 만 렌더링합니다. GL_POINTS

#version 120 

void main() 
{ 
    vec4 myOutputColor = gl_Color; 
    gl_FragColor = myOutputColor; 
    //gl_FragColor.r = 0.5; 
} 

이 두 쉐이더 컴파일 및 링크 :

버텍스 쉐이더 :

void main() 
{ 
    vec4 v = vec4(gl_Vertex); 
    v.z = v.z + sin(v.x*v.x + v.y*v.y)/10.0; 
    gl_Position = gl_ModelViewProjectionMatrix * v; 
} 

조각 쉐이더

나는이 두 쉐이더를 만들었습니다. 그리고 버텍스 쉐이더가 훌륭하게 작동합니다. GL_POINTS가 버텍스 쉐이더에서 그 죄를 사용하여 옮겨진 것을 볼 수 있습니다. 하지만 문제는 모든 점과 선이 검정색으로 렌더링되기 때문에 배경색이 검정색이 아닌 경우에만 GL_POINTS 및 GL_LINES 만 볼 수 있습니다. 렌더링 코드에서 glColor3f로 설정된 모든 색상이 무시되는 것 같습니다. 조각 쉐이더에서 주석 처리 된 행의 주석 처리를 제거하면 모든 선과 점을 빨간색으로 만들 수 있지만 gl_Color는 각 점에 대해 glColor3f로 설정된 색상과 일치하지 않아야합니까?

이 동작을 일으킬 수있는 다른 OpenGL 코드가 있습니까?

답변

11

꼭지점 셰이더에서 색을 통과시켜야합니다.

gl_FrontColor = gl_Color; 
+0

고마워요! 이제 작동! 나는 튜토리얼에서 그 부분을 어떻게 놓쳤는 지 모르겠다. :) – ivans

+1

더 많은 답변을 보려면 여기를 참고하십시오 : http://stackoverflow.com/questions/6430154/what-is-the-relationship-between-gl- color-and-gl-frontcolor-in-both 버텍스 및 fr –