2012-08-02 6 views

답변

1

고정 기능 파이프 라인 (ES 1.1)을 사용하는 경우 glReadPixels을 사용하면 GPU에서 픽셀 데이터를 가져 와서 직접 처리 할 수 ​​있습니다. 그런 다음 결과에서 텍스처를 만들고 새 텍스처에 매핑 된 쿼드를 렌더링해야합니다. 그러나 이것은 결과를 달성하는 데 상당히 비효율적 인 방법입니다.

쉐이더 (ES 2.0)를 사용하는 경우 GPU에서 직접 수행 할 수 있습니다. 이는 더 빠릅니다. 당신이 그것을 토글 아마도과, 일반 단편 쉐이더에서 그레이 스케일 수학을 추가 할 수

  1. 당신의 렌더링이 시작 간단 경우 : 그것은 몇 가지 방법 중 하나를 조각 쉐이더에서 greyscaling을하는 의미 부울 균일 변수.

  2. 일반 파이프 라인에서 그레이 스케일을 사용하지 않으려면 오프 스크린 FBO (텍스처)로 정상적으로 렌더링 한 다음 특수한 그레이 스케일 텍스처 셰이더를 사용하여 해당 텍스처의 내용을 화면의 FBO로 렌더링 할 수 있습니다 샘플링 된 텍셀에서 수학을 수행합니다. 당신이 그것을 필요로하는 경우에

는 여기에 그레이 스케일 수학의 : http://www.bobpowell.net/grayscale.htm 본질적으로, 그 공식에 RGB 값을 연결하고 모든 채널의 결과 휘도 값을 사용합니다.

+0

감사하지만 glReadPixels는 매우 느리고 어둡기 때문에 옵션이 아닙니다. :(다른 파이프 라인은 고정 파이프 라인입니까? – lacas

+0

@lacas : 쉐이더가 없다면 실제로 그레이 스케일로 화면을 렌더링하는 것 외에 씬에 대한 자세한 내용을 별도로 묻는 것이 좋습니다. (2 차원? 3 차원 조명 등) 접근 방법에 대한 정통한 답변을 얻을 수 있지만 이론적으로는 모든 색상을 변조하여 회색으로 만 색칠 할 수 있습니다. –