OpenGL 버전 3 이상에서는 클라이언트 쪽 렌더링을 사용하지 않아도됩니다. 즉시 모드가 제거되었으며 정점 배열은 더 이상 사용되지 않는 것 같습니다. 대신 올바르게 이해하면 VBO가 정점을 렌더링하는 주요 방법입니다.
모든 것을 렌더링하는 통일 된 방법을 갖는 논리를 보았지만 VBO가 정점 배열에 비해 큰 단점이없는 경우입니까? VBO는 일반적으로 1MB 이상의 데이터를 포함하는 큰 버퍼라고 생각했습니다. 작은 형상이 많은 장면이 있으면 어떻게합니까? 노드가 많은 장면 그래프가 있으며 각 노드에는 자체 변환 등이 필요합니다. 각 노드는 별도로 삭제하거나 별도로 추가 할 수 있어야합니다. 이전에 정점 배열을 사용하고있었습니다. 따라서 첫 번째 질문은 VBO로 전환하면 각 객체에 VBO를 할당해야하기 때문에 장면 그래프 객체에 더 많은 오버 헤드가 있는지 여부입니다.
또 다른 관심사는 렌더링중인 지오메트리가 매우 동적 일 수 있다는 것입니다. 최악의 경우, 모든 지오메트리를 일정 시간 동안 매 프레임마다 다시 보내야 할 때가 있습니다. 이 사용 사례에서 VBO가 정점 배열보다 성능이 좋지 않습니까? 최악의 경우 VBO가 정점 배열만큼 많은 작업을 수행하지만 더 이상 작동하지 않습니까?
더 간결한 형식으로 내 질문은 다음과 같습니다.
1) VBO 할당 / 할당에 상당한 오버 헤드가 있습니까 (버퍼를 설정하는 단순한 행위를 의미)?
2) 매 프레임마다 CPU에서 데이터를 업데이트하는 경우 정점 배열을 사용하는 것보다 훨씬 더 나쁠 수 있습니까?
그리고 마지막으로 알고 싶습니다.
3) 위의 질문 중 하나에 대한 대답이 "예"인 경우 VBO보다 유리할 수있는 다른 렌더링 모드를 더 이상 사용하지 않는 이유는 무엇입니까? 이러한 잠재적 할당 비용 등을 완화하기 위해 사용해야하는 기술과 같이 여기에없는 것이 있습니까?
4) 이러한 질문에 대한 답변은 사용중인 OpenGL 버전에 따라 크게 달라 집니까? 성능이 우수한 방식으로 VBO를 사용하여 코드를 OpenGL 3 또는 4와 호환되도록 리팩터링하면 동일한 기술이 OpenGL 2에서도 잘 수행 될 가능성이 높거나 특정 기술이 OpenGL 3에서 훨씬 빠를 가능성이 높습니다 +와 OpenGL 2를 가진 다른 사람들?
이 질문은 스택 오버플로에 대해 질문했지만이 사이트가 내 질문에 더 적합 할 수 있다는 것을 깨달았으므로 여기에 다시 게시하고 있습니다.