나는 FBO의 깊이 텍스처에서 깊이 값을 얻을 수 없다 .. 프로그램의 흐름은 다음과 같다 + 깊이 renderbuffer)FBO를 사용하여 심도 텍스처의 값을 가져올 수없는 이유는 무엇입니까?</p> <p>설정 <br/> 1. 만들기 PASS1의 FBO (색상 질감 + 깊이 질감) <br/> 2. 만들기 PASS2의 RBO (컬러 renderbuffer :
가
1 만 정점 렌더링 프로세싱 (PASS1) pass0 FBO의 깊이 질감에서
2. GET 깊이 값
3. 이전 깊이 사용 정점 및 단편 처리
glBindFramebuffer(GL_FRAMEBUFFER, pass1_fbo);
// vertex processing..
glActiveTexture(GL_TEXTURE1);
glGetTexImage(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, GL_FLOAT, &debug_buf[0]);
그러나 :
glActiveTexture(GL_TEXTURE0);
glGenTextures(2, &pass1_tex);
glBindTexture(GL_TEXTURE_2D, pass1_tex[0]);
glTexImage2D(GL_TEXTURE_2D, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, pass1_tex[1]);
glTexImage2D(GL_TEXTURE_2D, GL_DEPTH_COMPONENT, w, h, 0, GL_DEPTH_COMPONENT, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY);
glGenFramebuffers(1, pass1_fbo);
glBindFramebuffer(GL_FRAMEBUFFER, pass1_fbo);
glBindFramebuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMEMNT0, GL_TEXTURE_2D< pass1_tex[0], 0);
glBindFramebuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMEMNT, GL_TEXTURE_2D< pass1_tex[0], 0);
(pass0 FBO를 생성) 및 렌더링에 깊이 값을 얻을 수
Setup.1 코드 나는 다음과 같이했다 . 물론 모든 객체는 1.0에서 -1.0 거리 (NDC) 사이에 있으며, near 및 far 값은 gluPerspective()에서 1.0 및 2.0입니다.
FBO의 깊이 텍스처에서 적절한 깊이 값을 얻을 수없는 이유는 무엇입니까?
음 모두를 위해, 당신은 코드를 게시 할 수있는 실제로 컴파일됩니까? 'glBindFramebuffer'는 프레임 버퍼를 컨텍스트에 바인드합니다; 두 개의 매개 변수 만 필요합니다. 또한, 그것이'glFramebufferTexture'라고 가정된다면, 색상과 깊이와 같은 텍스처를 넣을 것입니다, 나는 꽤 합법적이지 않습니다. 프레임 버퍼의 완성도를 확인하고 있습니까? 마지막으로'glGetTexImage' 호출을 시도 할 때 심도 텍스처를 절대 사용하지 마십시오 –
심도 버퍼는 near 및 far 값에 관계없이 항상 [-1.0 .. 1.0]의 값 범위를가집니다 (적어도 < 멀리 그리고 양쪽은 합리적이다). 그것은 정상화가 여기에서하는 것입니다. – karx11erx