2010-06-29 6 views
3

아이폰에서 Open GL ES에 대한 최적의 그리기 호출이 무엇이라고 생각하는지 듣고 싶습니다.OpenGL에서 glDrawArray 호출 최소화

특히 많은 곳에서 glDrawArrays/glDrawElements에 대한 호출 횟수를 최소화하는 것이 가장 좋습니다. Apple은 최근 WWDC 프레젠테이션에서 최대 10 개가되어야한다고 생각합니다. 이 작업을 이해함에 따라 가능하면 모든 정점을 하나의 배열에 넣어야하므로 drawArrays 호출을 한 번만 수행하면됩니다.

그러나 이것은 전체 지오메트리에 적용될 것이므로 반드시 translate, rotate, scale 기능을 사용할 수 없으므로 혼란 스럽습니다. 예외적으로, 모든 정점 위치를 직접 계산할 필요가 없다는 것을 제외하고는 어느 것이 좋습니까?

연속 모양이 아닌 이상 팬/스트립 설정을 사용할 수 없다는 의미가 아닙니까?

이러한 단점은 제가 제대로 뭔가를 이해하지 못하는 것 같아요 수 있도록, 그래서 내가해야 확인을 찾고있는 것 같아 :

  • 모든 삼각형의 동네 짱 배열이 그릴 수 있도록 노력합니다.
  • 나는 모든 버텍스 위치를 스스로 고쳐야 할 것입니다.
  • 위치

에게 원하는 것 push'ing하고 그것으로 그려 각각의 일을 pop'ing 잊어 다른 사람들이 무엇을해야인가요?

감사

답변

8

광대 한 질문은 일괄 처리는 항상 타협의 문제이다.

성능면에서 이상적인 구조는 모든 삼각형을 포함하는 단일 배열로 그릴 수 있습니다.

여기에서 시작, 우리는 제약 조건을 추가 할 수 있습니다 :

  • 하나 추가 제약 는 16 비트의 정점 인덱스를 가진 것은 대역폭과 메모리 및 플랫폼에 아마 빠른 경로를 절약 할 수 있다는 것입니다. 그래서 삼각형을 그룹화하는 것은 을 65536 개의 꼭지점으로 묶는 것을 고려해 볼 수 있습니다. 당신이 쉐이더/재료/glState가 형상을 그리는 데 사용 전환 할 경우

  • 그런 다음, 당신은 쉐이더/재료/glState 당 1 무 호출을 방출하는 선택의 여지 (*)하지만 이 없습니다. 따라서 삼각형을 그룹화하면 shaderID/materialID/glStateID를 기준으로 그룹화를 고려할 수 있습니다.

  • 다음, 당신은 선택의 여지 (*)가없는 , 일을 애니메이션하지만 에 전송 GL, 에 매트릭스를 변환 한 다음 그리기 요청을 발행하려는 경우. 그래서 그룹화 삼각형, '변환 그룹'으로 그룹화 삼각형을 고려할 수 있습니다 예를 들어, 일반적인 변환을 가지고 함께 모든 정적 기하학, 애니메이션 구조 는 너무 그룹화 할 수 있습니다.

이 경우 메쉬를 병합하기 전에 (CPU를 사용하여) 꼭지점을 직접 변형해야합니다.

삼각형 스트립에 대해서는 축소 된 삼각형을 도입하여 토폴로지에서 불연속이 있더라도 스트립의 모든 메시를 변형 할 수 있습니다. 따라서 항상 적용되는 기술입니다.

그리기 호출을 줄이는 것은 타협의 게임이며, 일부 기술은 다른 3D 모델에 더 적합 할 수 있지만 일부 기술은 3D 모델에 적합 할 수 있습니다. IMHO, 핵심은 창의적이며 응용 프로그램을주의 깊게 벤치마킹하여 변경 사항이 실제로 대상 플랫폼의 성능을 향상시키는 지 여부를 확인하는 것입니다.

HTH, 환호,


(*) 실제로 같은 이러한 경우 무승부 호출의 수를 줄일 수있는 방법이 있습니다 :

  • texture atlases 그룹 다른 텍스처로는 하나는 GL에서 텍스처를 바꾸는 것을 막기 위해서입니다. 따라서 그리기 호출을 제한 할 수 있습니다.

  • (가상) 하드웨어 인스턴스은 셰이더가 다양한 소스에서 변형을 가져와 메쉬 인스턴스를 다른 방식으로 변환 할 수있게합니다.

  • ... 매우 광범위한 질문에

+0

훌륭한 대답. – Dad

+1

2d 앱 (스프라이트)을 주로 코딩하므로 총 버텍스 수가 매우 낮지 만 스프라이트 수가 상당히 높을 수 있으며 스프라이트 당 그리기 호출을 사용합니다. 그럼에도 필자는 지금까지 필 레이트 관련 퍼포먼스 히트만을 알아 차렸다. 가능한 한 많이 내 스프라이트를 배치하고 싶습니다. 그러나 독립적으로 움직이는 객체의 모든 프레임을 VBO/VAO/IBO를 재건하는 비용이 얼마인지 궁금합니다. –