문제

OpenGL에서 사용 백면 컬링과 깊이 버퍼의 차이점은 무엇입니까?

도움이 되었습니까?

해결책

Backface Culling은 OpenGL이 시청자와 마주 보는 얼굴을 결정하고 보이지 않는 경우입니다. 큐브를 생각하십시오. 큐브를 어떻게 회전하든 3면은 항상 보이지 않습니다. 이면 어떤면에 직면하는지 파악하고, 그릴 다각형 목록에서 제거하면 드로잉 목록을 반으로 줄였습니다.

깊이 버퍼링은 상당히 간단합니다. 그려진 모든 다각형의 모든 픽셀에 대해 z 값을 z 버퍼와 비교하십시오. z 버퍼의 값보다 낮은 경우 z 버퍼 값을 새로운 z 버퍼 값으로 설정하십시오. 그렇지 않은 경우 픽셀을 버립니다. 깊이 버퍼링은 매우 좋은 결과를 제공하지만 모든 픽셀에는 값 조회가 필요하므로 상당히 느릴 수 있습니다.

실제로이 두 가지 방법 사이에는 비슷한 것이 없으며 종종 모두 사용됩니다. 큐브가 주어지면 먼저 컬링을 사용하여 다각형의 절반을 잘라내어 Z 버퍼링을 사용하여 그릴 수 있습니다.

컬링은 렌더링 된 다각형을 줄일 수 있지만 정렬 알고리즘은 아닙니다. 그것이 Z 버퍼링의 것입니다.

다른 팁

주어진 삼각형에는 양면, 앞면과 뒷면이 있습니다. 당신이보고있는 측면은 점이 정점 목록에 표시되는 순서 (권선이라고도 함)에 따라 결정됩니다. 일반적으로 삼각형 목록은 교대하는 권선을 가지므로 앞의 두 지점을 재사용 할 수 있지만 스트립에 주어진 삼각형의 얼굴은 번갈아 사용하지 않습니다. Back Face Culling은 장면의 삼각형이 뷰에서 멀어지게되는 최적화 단계입니다.

깊이 버퍼 (Z- 버퍼)는 이미 렌더링 된 가장 가까운 것 (깊이가보기와 관련이 있음)에 매달려있는 데 사용됩니다. 드로우 목록에서 다음에 나오는 것은 내가 이미 그린 것 (즉, 더 멀리 떨어져있는 깊이가 있습니다)이면 방해 받으려면서도 건너 뛸 수 있습니다. 그리기 새로운 것이 더 가까워지면, 나는 그것을 그려서 새롭고 가까운 값으로 깊이 버퍼를 업데이트합니다.

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