1

내 게임에서 지연 렌더러를 사용합니다. 따라서 첫 번째 렌더 패스는 여러 렌더 대상을 사용하고 깊이 버퍼를 채워서 알베도 및 표준 버퍼를 만드는 것입니다. 모든 버퍼는 실제로 텍스처입니다.다른 프레임 버퍼에서 깊이 텍스처에 액세스하는 방법은 무엇입니까?

이제 다른 렌더링 패스, 즉 다른 프레임 버퍼에서 깊이 텍스처를 변경하지 않고 깊이 버퍼에 액세스하려고합니다. 깊이 값을 읽고 싶습니다. 그 패스의 경우 대부분 전체 화면 사각형을 그립니다. 깊이 텍스처를 업데이트하고 깊이 값을 0으로 채우지 않기를 바랍니다.

다른 프레임 버퍼에 깊이 텍스처를 첨부하고 쓰기를 확인하는 방법 만?

+1

두 번째 FBO에 깊이 텍스처를 부착합니다. 참고 : 일부 ATI 드라이버와 함께 Linux에서 문제가 발생했습니다. 후퇴는 blit을하는 것이지만, 필요하지는 않기를 바랍니다. – Grimmy

+0

나는 * read *를 의미한다고 생각하니? – Entalpi

답변

3

다른 프레임 버퍼에 동일한 깊이 버퍼를 부착 할 수 있습니다 (라이트 볼륨을 그리는 동안 심도 테스트를 사용하려는 경우에만이 작업을 수행하면됩니다). 해당 패스의 심도 기록을 비활성화합니다 (glDepthMask(GL_FALSE)). 또한 깊이 버퍼 (텍스처가 렌더 버퍼가 아닌 것으로 가정)를 텍스처 단위에 바인딩하고 셰이더에서 깊이 값을 읽을 수 있습니다. 당신이 할 수없는 유일한 일은 동일한 텍스쳐에서 동시에 읽고 쓰는 것이지만 어쨌든 그렇게하고 싶지는 않습니다.

+0

그래서'GL_DEPTH_COMPONENT24' 타입의 텍스처를 텍스처 유닛에 바인드 할 수 있습니까? 그렇다면 해결책이 될 것입니다. – danijar

+0

맞습니다. – GuyRT

관련 문제