이것은 실제로 성능과 유연성 사이의 선택이지만 이에 대한 의견을 제시하겠습니다.
하나의 단일 VBO
긍정적 인면은 다음과 같습니다.
- 한 번의 호출로 장면을 그립니다. 성능 이 향상 됩니다. 응용 프로그램에 여러 번의 그리기 호출이 필요할 수 있지만 여전히 단일 VBO를 가질 수 있으며 카운트와 오프셋으로 그리기를 결정할 수 있습니다.
- 객체 사이의 상태 변경이 필요하지 않습니다. 성능 이 향상 됩니다.
그리고 부정적인면은 다음과 같습니다.
- 관리하기가 어렵지만, 코드가 올바르게 설계된 경우 코드 작성 방법에 따라 다릅니다.
- 관리하기 어렵다고 말하면 VBO 업데이트, 모든 객체 등에 올바른 오프셋 설정 등을 의미합니다.
개별 VBO : s
긍정적 인면은 다음과 같습니다.
- 구현하기 쉽습니다.
- 처음부터 쉽게 관리 할 수 있습니다.
그리고 부정적인면은 다음과 같습니다.
- 많은 상태 변경. 성능이 저하됩니다.
- 많은 무승부 전화. 성능이 저하됩니다.
요약
응용 프로그램을 프로파일 링하는 것이 좋습니다. 볼 수있는 데이터에서 실제 병목 현상이 발생합니다. 조기 최적화는 (이 경우) 불필요한 것으로 표시 될 수 있습니다. 그러나 개별 VBO 시나리오 시나리오에서 애플리케이션에서 실제 성능 손실을 발견 하면 단일 VBO 구현을 시작할 수 있습니다.
그러나 필요하지 않은 한 (개체 수가 적거나 상태가 전반적으로 많이 변경되지 않는 등) 개별 VBO와 함께 사용하는 것이 좋습니다.
편집하다
여러 번의 그리기 호출로 괜찮을 것이라고 언급하지 않았습니다. 성능 결정 시간에서 가장 중요한 것은 상태 변경을 최소로 유지하는 것입니다. 처리 할 인덱스 수와 모든 드로우 콜에 대한 오프셋을 간단히 설정할 수 있습니다. 그러나 상태 변경을 가능한 한 낮게 유지하고 가능한 한 적은 호출을하십시오. 이 답변 의 가장 큰 인사 이거나 적어도 내가 말하려고 한 것입니다.