2013-05-09 2 views
0

기존 텍스처를 사용하여 객체를 렌더링해야하며 렌더링하는 동안 색상을 변경해야합니다. (적색 채널에 0.5를 곱하는 등) 기존 텍스처는 단색이 아닙니다. 조명을 사용하지 않고 쉐이더없이이 작업을 수행해야하므로 작업중인 응용 프로그램을 방해하지 않습니다. 나는 버퍼를 직접 읽고 쓸 수있는 렌더링에서 일찍 일할 수 없다.조명이나 쉐이더없이 OpenGL 렌더링 중에 색상을 변경하십시오.

실제로, 나는 정상적인 렌더링 중에 작동하는 일종의 색 변환 매트릭스 또는 필터를 원합니다.

+0

응용 프로그램을 방해하지 마십시오. 그게 무슨 뜻입니까? DLL 주사를하고 있습니까? –

+0

또한 어떤 API 버전 (OpenGL)을 타겟팅하고 있습니까? – Trax

+0

OpenGL 2 또는 그 이하이며 사용자 방향이있는 Java 프로그램에 코드가 삽입되어 있습니다. GPU 메모리는 프리미엄이지만 GPU 처리가 충분히 활용되지 않으므로 추가 텍스처보다는 계산이 더 좋습니다. 이 프로그램은 적절한 조명 코드 대신 불쾌한 해킹을 사용하므로 쉽게 대체 할 수 없습니다. – JAKJ

답변

1

제한된 정보의 자료 몇 가지 가정합니다.

고정 파이프 라인으로 작업하고 있다고 가정합니다. glBitmap 또는 glDrawPixels와 같은 저수준 픽셀 함수를 사용하지 않는다고 가정합니다. 너라면 안된다. 의 glBegin가, glEnd는 glVertex2f, glTexCoord2f 은 색상이 단지의 glBegin 후 다른 그리기 명령 전에 glColor 함수를 사용하여 변경하려면 사용하여 질감 쿼드를 그리기 :

는이 문제를 다음을 시도 해결합니다. cpu에서 색 변환 행렬을 수행하고 그 결과를 glColor와 함께 사용해야합니다.

이미지는 그에 따라 혼합됩니다. WHITE는 이미지 색상을 변경하지 않습니다. GL_LIGHTING이 활성화되어 있지 않은지 확인하십시오.

+0

이것은 재미있을 것 같고, 나는 오늘 밤 그것을 시도 할 것입니다. 이 프로그램은 적절한 코드가 아닌 고정 된 파이프 라인을 사용하고 있습니다. 예를 들어 텍스처가있는 사각형을 그리는 것입니다. – JAKJ

0

OpenGL에는 GL_MODELVIEW 또는 GL_PROJECTION처럼 액세스하고 수정할 수있는 색 변환 행렬 (GL_COLOR)이 있습니다 (glLoadMatrix 또는 glMultMatrix가 필요합니다. glRotate와 같이 색으로는별로 의미가 없습니다). GL_ARB_imaging 확장이 필요합니다.

+0

정상적인 렌더링이 아닌 직접 픽셀 전송 중에 만 작동한다고 들었습니다. – JAKJ

관련 문제