2009-04-25 8 views
1

OpenGL 컬러 매트릭스 변환은 어떻게 작동합니까?OpenGL 컬러 매트릭스

삼각형을 그리는 샘플 프로그램을 수정하고 삼각형의 색상을 변경할 수 있는지 확인하기 위해 색상 매트릭스 코드를 추가했지만 제대로 작동하지 않는지 확인했습니다.

static float theta = 0.0f; 
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
glClearDepth(1.0); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

glPushMatrix(); 
glRotatef(theta, 0.0f, 0.0f, 1.0f); 
glMatrixMode(GL_COLOR); 

GLfloat rgbconversion[16] = 
{ 
    0.0f, 0.0f, 0.0f, 0.0f, 
    0.0f, 0.0f, 0.0f, 0.0f, 
    0.0f, 0.0f, 0.0f, 0.0f, 
    0.0f, 0.0f, 0.0f, 0.0f 
}; 
glLoadMatrixf(rgbconversion); 
glMatrixMode(GL_MODELVIEW); 

glBegin(GL_TRIANGLES); 
glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f , 0.5f); 
glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(0.87f, -0.5f, 0.5f); 
glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(-0.87f, -0.5f, 0.5f); 
glEnd(); 
glPopMatrix(); 

내가 알 수있는 한,로드 할 색상 매트릭스는 삼각형을 검정색으로 변경해야하지만 작동하지 않는 것 같습니다. 내가 빠진 것이 있습니까?

답변

6

색상 매트릭스는 현재 하드웨어에서 하드웨어 가속이 아닌 glDrawPixels와 같은 픽셀 전송 작업에만 적용됩니다. 그러나 조각 쉐이더를 사용하여 색상 매트릭스를 구현하는 것은 정말 쉽습니다. 매트릭스를 균일 한 mat4로 전달하고 그 다음에는 gl_FragColor

1

정확하게 보이지만 현재 색상 매트릭스는 삼각형의 알파 값을 0으로 설정하므로 그려지는 동안 화면에는 나타나지 않습니다.

+0

사실, 삼각형은 여전히입니다 원래의 빨강, 녹색 및 파랑 색으로 그려져 있으므로 색상 매트릭스가 알파 구성 요소에 영향을 미치지 않는다고 생각합니다. –

+0

알파 구성 요소는 투명도가 활성화 된 경우 최종 이미지에만 영향을 미치며 분명히 그렇지 않습니다. – AndyG

+0

glEnable (GL_BLEND)을 추가했습니다. 그러나 그것은 여전히 ​​그림에 영향을주지 않습니다. 여전히 빨간색/녹색/파란색 삼각형입니다. 컬러 매트릭스가 효과가없는 것으로 보입니다. –

1

"또한 ARB_imaging 확장이 지원되는 경우 GL_COLOR도 허용됩니다."

glMatrixMode 문서에서. 확장 기능이 컴퓨터에서 지원됩니까?

+0

내가 아는 한 ARB_imaging은 활성화되어 있지만 어떻게 알 수 있습니까? VS 2008을 사용하고 있습니다. –

+0

OpenGL Extensions Viewer를 실행했으며 GL_ARB_imaging이 내 컴퓨터의 유효한 확장이라고 말합니다. –

0

가능한 문제를 발견했습니다. 색상 매트릭스는 "이미지 처리 서브 세트"에서 지원됩니다. HW를 가장, 그것은 드라이버에 의해 지원되었다 (소프트웨어 구현)

솔루션 :. 가 glEnd() 후이 줄을 추가

glCopyPixels(0,0, getWidth(), getHeight(),GL_COLOR); 

그것은 매우 느린 ....