2017-02-21 5 views
0

내가이하고 싶습니다 :블렌딩과 깊이 테스트를 동시에 사용할 수 있습니까?

그리기 개체 (1) (내가 glDrawElement 또는 glDrawArray를 사용해야하기 때문에, 깊이 테스트를 사용해야합니다) 그리기 개체 2

혼합 1과 2 (OBJ 1 + 투명 obj2보다가)

, 간단한 의사 코드로 설명하면서

glEnable(GL_BNELD); 

/// draw obj1 /// 
glEnable(GL_DEPTH_TEST); 
glUniform4f(color1,1.0f); 
glDrawElements(...) // draw obj1 
glDisable(GL_DEPTH_TEST); 

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

/// draw obj2 /// 
glEnable(GL_DEPTH_TEST); 
glUniform4f(color2,0.5f); 
glDrawElements(...) // draw obj2 
glDisable(GL_DEPTH_TEST); 

glDisable(GL_BLEND); 

나는 어떤 대안이 후, 그 혼합과 깊이 테스트를 동시에 사용하지 들었어요? (실제로 위 코드의 결과는 이상하게 보입니다)

+0

예, 아티팩트를 만들 때 무엇을하고 있는지 알 필요가 있습니다.이 방법이 도움이 될 수 있습니다. [OpenGL - 주문 투명도를 만드는 방법] (http://stackoverflow.com/a/37783085/2521214) – Spektre

답변

2

예, 혼합 및 깊이 테스트는 동시에 사용할 수 있습니다. 전경에서 불투명 한 부분에 의해 부분적으로 가려진 반투명 한 것을 그려야하는 경우이를 필요합니다. 단순한 깊이 버퍼 렌더링 현재의 기술에서는 불가능 무엇

는 결과가 근처에까지 그들을 드로잉 등가 인으로 임의의 순서로 오브젝트를 블렌딩 위해 독립적 투명성, 즉이다.

관련 문제