인프런 커뮤니티 질문&답변

eachan님의 프로필 이미지
eachan

작성한 질문수

OpenGL 쉐이더 (3) shader 3D 그래픽스 - 애니메이션 원리, depth 개념, Z 버퍼

32-6 OpenGL Z 버퍼

32-6 OpenGL Z 버퍼 - Depth 설정 관련 질문

해결된 질문

작성

·

196

0

안녕하세요.

glEnable(GL_DEPTH_TEST); <-- 이 구문이 drawFunc() 안에 꼭 들어가야 하는 이유가 있나요?

이렇게 하면 드로잉 할 때 마다 실행이 되는데요.

main 함수나 initFunc 함수 안에 넣어서 한 번만 실행해도 괜찮은가요?

답변 부탁 드립니다.

 

 

답변 1

0

안녕하세요.

일종의 습관으로 볼 수 있습니다. ^^;;;

예제 프로그램들에서와 같이, 간단한 출력을 하는 경우에는, glEnable 종류를 main loop 이전에 한번 설정하는 방법이 더 나을 수 있습니다.

반면에, 꽤 복잡한 scene 을 출력할 때는, depth 처리가 필요한 것들을 출력했다가, 중간에 depth 처리가 불필요한 것을 출력했다가, 다시 depth 처리가 필요한 것을 출력했다가 하는 경우도 종종 생깁니다.

이런 부분들을 처리하다 보면, 중요한 glEnable 들은 draw 하기 바로 전에 다시 set 하는 방식을 취하기도 합니다.

다행히, glEnable 함수로 무엇을 설정하는 것이, 대부분의 경우는 크게 오버헤드가 없어서, 필요하면 중복해도 써도 별 문제가 없다 보니까, glEnable 함수를 draw 루틴에 넣어두기도 합니다.

굳이 따지면, 비효율적인것은 맞는데, 다른 책이나, 싸이트의 예제들을 보아도, draw 루틴에서, 일종의 습관처럼 써 놓는 경우가 종종 있습니다.

감사합니다.

eachan님의 프로필 이미지
eachan

작성한 질문수

질문하기