각 타일에 꼭지점 모델이있는 타일 기반 렌더러를 만들고 있습니다. 그러나, 각 정점 모델로부터 단지 하나의 프레임에 작은 부분 만 렌더링됩니다. 이러한 하위 집합은 모든 프레임을 변경합니다.큰 버퍼 스위치 대 작은 버퍼 스위치
가장 빠른 방법은 무엇입니까? 다음 옵션을 생각해 볼 수 있습니다.
- 모든 모델에 대해 하나의 그리기 호출을 만듭니다. 모든 모델은 GPU에 저장됩니다. 모든 드로우 콜마다 매번 전체 vbo가 전환됩니다. 그런 다음 인덱스를 사용하여 실제 렌더링에 적합한 작은 부분을 선택합니다.
- 다른 모든 vbos의 필요한 (작은) 하위 집합을 복사하여 모든 프레임을 어셈블 링하는 하나의 vbo로 하나의 그리기 호출을 작성합니다 (데이터는 vram 내에 복사됩니다).
- 하나의 vbo로 하나의 그리기 호출을 작성하지만 vbo는 glBufferData를 사용하여 CPU 데이터의 (작은) 하위 집합으로 모든 프레임에서 재생성됩니다.
가장 빠른 것 같습니까? 아니면 더 빠른 것을 생각할 수 있습니까?
더 큰 VBO 사이를 전환하는 것이 더 작은 VBO 사이를 전환하는 것보다 비용이 많이 드는 것은 분명히 하나의 결정 요인입니다.
그냥 측정 해보세요. – knivil