2014-06-22 16 views
2

OpenGL 직접 모드 렌더링을 사용하여 C#으로 게임을 작성하고 있습니다. 여러 번 잘못 정렬하여 투명 폴리곤이 올바르게 나타나지 않습니다. 나는 많은 것을 조사해 왔지만 깊이 정렬을 빠르게 수행하는 방법에 대한 자습서를 찾을 수 없습니다. 내 시도 방법은 List.sort를 사용하여 카메라의 각 투명 삼각형의 깊이를 계산하는 것이지만 매우 느립니다 (초당 프레임이 아닌 프레임 당 초)다각형 깊이 정렬 C#

깊이 정렬을 수행하는 표준 방법이 있습니까? C#에 대한 유용한 자습서가 있습니까? 빠른 방법이 있습니까?

답변

1

반투명 폴리곤의 순서 독립적 렌더링은 일반적인 방식으로 올바른 결과를 얻는 데 가장 고통스러운 효과 중 하나 일 수 있습니다. 그래서 사람들은 속도와 품질의 절충점이 다른 다양한 트릭을 사용합니다. 가장 간단한 방법은 형상을 두 단계로 렌더링하는 것입니다.

  1. 모든 불투명 기하학을 렌더링합니다.
  2. 깊이 기록을 비활성화하고 GL.DepthMask(false) 반투명 지오메트리를 렌더링하십시오.

이 방법은, 당신의 반투명 폴리곤 깊이 테스트 불투명 다각형에 대해 수 있지만 깊이 버퍼를 수정하지 않습니다이 (가 깊이 테스트 다른 반투명 폴리곤에 대해하지 않습니다 즉.)

입니다 간단하고 신속하며 다각형 정렬의 필요성을 피할 수 있습니다. 단점은 추가 또는 곱셈 블렌딩 (소위 "교환 가능"혼합 모드)을 사용하는 반투명 효과에만 작동한다는 것입니다. 다른 블렌딩 효과의 경우 반투명 폴리곤을 정렬하거나 심도 필링과 같은 기술을 사용해야합니다.

참고 :

  1. http://www.openglsuperbible.com/2013/08/20/is-order-independent-transparency-really-necessary/
  2. https://gamedev.stackexchange.com/questions/43635/what-is-the-order-less-rendering-technique-that-allows-partial-transparency
  3. https://developer.nvidia.com/content/interactive-order-independent-transparency
  4. http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf