문제

OpenGL에서 다음 효과를 어떻게 달성 할 수 있는지 아는 사람이 있습니까?

  • 렌더링 된 장면의 밝기를 변경하십시오
  • 또는 OpenGL에서 감마 설정을 구현합니다

나는 빛의 주변 매개 변수와 빛의 유형 (방향 및 전 방향)을 변경하여 시도했지만 결과는 균일하지 않았습니다. 티아.

도움을 주셔서 감사합니다. 추가 정보 : * Windows 세부 사항 API를 사용할 수 없습니다. * 감마 설정은 다른보기에 대해 다른 감마를 가져야하므로 전체 창에 영향을 미치지 않아야합니다.

도움이 되었습니까?

해결책

Win32에서는 SetDeviceGammaramp를 사용하여 전체 밝기 / 감마를 조정할 수 있습니다. 그러나 이것은 전체 디스플레이에 영향을 미치므로 앱이 전체 화면이 아닌 한 좋은 생각이 아닙니다.

휴대용 대안은 전체 장면을 더 밝게 또는 어두워 지거나 (번거 로움) 전체 장면에 대한 전체 화면 알파 블렌드 쿼드를 슬립하여 원하는대로 밝게하거나 어둡게하는 것입니다. 이러한 접근법 중 어느 것도 감마 곡선에 영향을 줄 수 없으며 전체 밝기 만 있습니다. 감마를 조정하려면 전체 장면을 텍스처로 잡고 감마 기능을 통해 각 텍셀을 실행하는 픽셀 쉐더를 통해 화면으로 다시 렌더링해야합니다.

자, 업데이트 된 질문을 읽은 것은 필요한 것은 그 아래의 모든 것을 어둡게하거나 밝게하기 위해 블렌딩이 설정된 쿼드입니다. 예를 들어.

if( brightness > 1 )
{
    glBlendFunc( GL_DEST_COLOR, GL_ONE );
    glColor3f( brightness-1, brightness-1, brightness-1 );
}
else
{
    glBlendFunc( GL_ZERO, GL_SRC_COLOR );
    glColor3f( brightness, brightness, brightness );
}
glEnable( GL_BLEND );

draw_quad();

다른 팁

http://www.gamedev.net/community/forums/topic.asp?topic_id=435400 그렇지 않으면 질문에 대한 답이 될 수 있습니다. 그렇지 않으면 픽셀 셰이더로 감마 수정을 구현할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top