2009-03-25 5 views
3

나는 섀도우 매핑 알고리즘을 만들고 있는데, 첫 번째 패스에서 생성하는 깊이 맵을 디버그하고 싶습니다. 그러나 깊이 텍스처가 뷰포트에 제대로 렌더링되지 않는 것처럼 보입니다. 선호하는 셰이더를 사용하지 않고 그레이 스케일 이미지로 심도 텍스처를 표시하는 쉬운 방법이 있습니까?OpenGL에서 깊이 텍스처를 시각화하는 방법은 무엇입니까?

+0

설정이 제대로되어 있지 않은 것처럼 보이게 설정할 수 있습니까? 이 작업을 수행하는 데는 몇 가지 방법이 있습니다. 따라서 우리가 문제를 해결할 수 있다면 많은 외국 코드를 ​​작성하는 것보다 쉬울 것입니다. –

답변

2

일반 텍스처 그레이 스케일 텍스처와 마찬가지로 깊이 텍스처 (2D)를 사용할 수 있습니다. 유일한 문제는 그 안의 값이 모두 너무 높아서 흰색 텍스처 만 볼 수 있다는 것입니다. 그렇다면 깊이 텍스처를 만들 때 (또는 쉐이더 또는 glTexEnv로 값의 크기를 조절할 때) 사용되는 z- 근처 평면 및 --far 평면을 사용하면됩니다.

0

확실히, 원하는 텍스처 유닛에 깊이 텍스처를 바인딩하고, 텍스처링을 활성화하고, 2D 쿼드를 그립니다. 섀도우 맵을 실시간으로 볼 수 있도록 화면의 일부분 만 채우도록 쿼드의 크기를 조정할 수도 있습니다.

OpenGL에는 텍스처를 배열로 복사 할 수있는 함수가 있습니다. 이것을 이미지로 저장하고 이미지 뷰어를 사용하여 볼 수 있습니다.

8

당신은 그레이 스케일 수준으로 표시 깊이 텍스처 매개 변수를 변경해야 할 수도 있습니다 : 고정 기능을 통해 하나, 그런 다음 일반적으로 '정상'그레이 스케일 2D 텍스처로 텍스처를 사용할 수 있습니다

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE) 
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE) 

, 또는 'sampler2d'셰이더 유니폼.

+0

아하, 원래 질문이 너무 오래되었음을 알지 못했습니다. 어쨌든... – rotoglup

관련 문제