2009-04-14 4 views
3

다음과 같이 렌더링하는 이미지가 있습니다.그레이 스케일의 glDrawPixels?

glDrawPixels(image->width, image->height, GL_BGR, GL_UNSIGNED_BYTE, image->imageData); 

어쨌든 그 대신 그레이 스케일로 그릴 수 있습니까 (먼저 텍스처로로드하지 않고)? 파란색 구성 요소가 L2 표준이 아닌 회색 값으로 사용되는 경우에만 신경 쓰지 않습니다. 빠르고 간단하게 출력해야합니다.

GL_LUMINANCE는 3 채널 이미지에서는 작동하지 않는다는 점을 제외하고는 훌륭합니다.


@timday :

http://img164.imageshack.us/img164/3603/grayscale.png

답변

5

당신이 시도하고, 그것을 작동 거 야 아무 생각도 없어에 대한 비뚤어진 생각 :

glPixelZoom(1.0f/3.0f,1.0f); 
glDrawPixels(3*width,height,GL_LUMINANCE,GL_UNSIGNED_BYTE,data); 

즉, 귀하의 3을 치료 - 채널 이미지를 1 채널 (그레이 스케일) 이미지로 3 배 넓이로 표시하고 x 확대/축소 비율을 사용하여 너비를 축소하여이를 보완합니다. GL이 항상 확대/축소 된 glDrawPixels에 대해 가장 가까운 이웃 샘플링을 수행한다고 생각하므로 필요에 따라 샘플의 각 트리플에서 동일한 구성 요소를 일관되게 선택해야합니다.

+1

오 세상에 ..... 나는 그게 효과가 있다고 믿을 수 없다! 그것은 이미지를 반으로 나누고, 한쪽은 다른 것보다 더 잘게 나눕니다. 그러나 그것은 작동합니다. – mpen

+0

1.0/3.0이 내부적으로 유지되는 정밀도와 관련이있을 수 있습니다 (특히 특정 크기까지는 정상적으로 작동하는 경우). 비율을 약간 조정하거나 픽셀 당 4 바이트 형식과 줌 비율 0.25를 사용하는 것이 좋습니다. – timday

관련 문제