2011-02-26 3 views
0

여기 내 문제가 있습니다.OpenGL 투명 스카이 박스와 블렌딩 문제 + 투명한 높이 맵

6 투명 투명한 폴리곤 (GL_BLEND, 소스 GL_ONE, dest GL_ONE)으로 큐브 스카이 박스를 렌더링 한 직후 모든 것 (각 모서리에서 정점 색으로 표시) 앞에 직각 쿼드 (뷰포트 채우기)가 렌더링됩니다. 완벽하게 작동하는 스카이 박스는 밑에있는 쿼드 (quad)와 하프 컬러 (half-colored)에 의해 반 색을 띄게됩니다.

높이 맵 (GL_BLEND, GL_ONE, ...)을 추가하면 문제가 발생합니다. 높이 맵은 skybox와 + 아래에 4 개로 혼합됩니다.

내가 원하는 것은 높이지도가 정사각형 쿼드와 혼합되지만 스카이 박스와 혼합되지 않기를 원합니다. 높이지도를 통해 스카이 박스를보고 싶지 않습니다.

다른 방법이 있습니다.

오르 투 쿼드를 먼저 렌더링하고 스카이 박스를 렌더링하는 것이 가능합니까 (지금처럼) 스카이 박스를 빼는 특별한 블렌딩을 가진 높이 맵 다음에 일종의 멀티 패스 블렌딩을 사용하는 정사각형 쿼드가 아닌 렌더링이 가능합니까?

대단히 감사합니다!

디미트리

답변

0

OpenGL은 어떠한 장면 그래프 렌더링없는 각 공정 후의 그래서 기존의 모든 콘텐츠에 대한 모든 추가적인 명령. glBlendFunc (GL_ONE, GL_ONE); 값을 실제로 추가하지 않는 한 어쨌든 올바르게 소리를 내지 않습니다. 나는 당신이 glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)를 찾고 있다고 생각합니다;

+0

당신이 어떤 생각을 가지고 있습니까 도움에 대한 버퍼는 픽셀의 가시성을 정렬 할? skybox 폴리곤의 숨겨진 부분을 렌더링에서 막을 수있는 더 작은 부분으로 잘라낼 수있는 알고리즘이 있습니까? 나는 아마도 여러 개의 투명한 물건이 다른 사람들과 충돌하는 경우를 만난 최초의 사람은 아닐 것입니다. – dimcaron144

+0

블렌드가 제대로 작동하려면 파트를 맨 앞으로 정렬해야합니다. 다음으로는 GL_ONE, GL_ONE 블렌딩 기능을 사용하고 싶지 않을 것입니다. 이것은 "빛나게"될 것입니다. 알파 채널을 사용하지 않는 블렌딩을 원하는 알파 채널을 원한다고 확신합니다. – datenwolf

2

glBlendFuncGL_ONE, GL_ONE과 함께 사용하는 것을 덧셈 블렌딩이라고하며, 다른 어떤 것과 마찬가지로 멋진 속성이 교환 가능해야합니다. 즉 A + B = B + A입니다.

그런 다음 다른 순서로 내용을 그릴 수 있으며 혼합하면 동일한 결과가 나타납니다.

귀하의 경우, 높이 맵과 스카이 박스 없이 블렌드 할 수 있습니다. 다음 전체 화면 쿼드 블렌드와 함께 사용하십시오. 는 Z를 수 있도록 활성화 GL_DEPTH_TEST으로,

  • 먼저 스카이 박스를 그린 다음 당신의 높이지도
  • 는 다른 방법으로 주위를 그릴 :

    은 당신도 수, 중복을 높이지도와 스카이 박스를 방지하기 위해 당신이

희망이 내가이 작업을 수행 할 수있는 방법을

관련 문제