2010-06-28 3 views
1

2D Polygons를 그리는 중입니다. 사실 저는 많은 삼각형을 그리며 GLUOrtho2D를 사용하고 있습니다. 축소를 통해 훨씬 더 좋은 프레임 속도를 얻었습니다. 그래픽 카드의 채우기 속도를 극대화하고 초기에 의심했던 것처럼 너무 많은 다각형을 그리는 것이 아니라는 것을 깨달았습니다. 나는 이것이 겹치는 다각형을 많이 드로잉하고 사용하기 때문에라고 생각한다.OpenGL과 알파 블렌딩을하는 가장 좋은 방법은 무엇입니까?

glEnable(GL_BLEND); 

    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

내가 사용해야 할 혼합 기능인가? 내가하는 일의 성격에 따라 어떻게 필링을 최소화 할 수 있을까? GL_DEPTH_TEST를 활성화하고 Z를 사용하여 폴리곤을 정렬했지만 알파 블렌딩 이후로는 도움이되지 않습니다. 이런 종류의 일을하는 가장 효율적인 방법은 무엇입니까?

감사합니다.

답변

3

"이하 블렌딩 등 z 버퍼링 사용"한다. 일반적으로 성능이 아닌 원하는 출력을 기반으로 올바른 혼합 기능을 선택합니다.

투명하거나 반투명 한 모든 다각형을 렌더링합니까? 그렇지 않다면, 당신은 가지고있는 불투명 한 폴리곤과는 별개로 렌더링을 분리하고 적절하게 GL 상태를 설정하는 것이 도움이 될 것입니다.

질감이있는 다각형도 있습니까? 텍스처 처리를 최적화 할 수 있습니다 (예 : 컨텍스트 스위치 축소,보다 효율적인 이미지 형식 사용 등).

마지막으로이 삼각형을 어떻게 렌더링하고 있습니까? 직접 모드 또는 정점 배열을 사용하는 경우 VBO 사용을 고려하십시오.

+0

저는 VBO를 사용하고 있습니다. 모두 반투명입니다. 텍스처가 사용되지 않았습니다. glColor4f() – jmasterx

+0

어떤 종류의 다각형입니까? 삼각형을 일괄 적으로 렌더링하고 있습니까? 또한 VBO를 삼각형 정점 위치와 인덱스 모두에 적용합니까? – stinky472

+0

각 모양은 약 150 개의 삼각형이 약 4,000 삼각형 (느리지 않니?)에서 천천히, 일괄 적으로 렌더링합니다 (삼각형이 아닌 다각형). 나는 indicand 및 DrawRangeElements에 익숙하지 않아서 GlDrawArrays()를 사용하고 있습니다. – jmasterx

2

가능한 한 많은 삼각형에 알파 혼합을 피하십시오. 그것은 합병되고 예, 그것은 정말로 비싸게됩니다. 마법 같은 고성능 혼합 기능은 없습니다.

유일한 해결책은 I 도움이 될 다른 혼합 기능을 이용하여 의심

0

혼합 기능을 변경하면 블렌딩 계수가 변경되지만 수식에서는 변경되지 않습니다. 어쨌든 현대 비디오 카드는 하드 코딩 된 방정식을 사용하지 않습니다. 귀하의 요구를 충족시키는 pixel shader을 작성할 수 있습니다.

아직, 그렇지 않은 경우 "많이 삼각형"으로 VBO을 사용하는 것이 좋습니다.