2014-01-20 7 views
1

나는 현재 directX10에서 비트 맵 글꼴을 렌더링하려하고 있으며 가능한 한 효율적으로이 작업을 수행하려고합니다. 나는이 질문 때문에 나의 디자인에 시작을 얻는 데 어려움을 겪고있다.VertexBuffer를 재사용하거나 새로운 VertexBuffer 객체를 만드시겠습니까?

단일 VertexBuffer를 다시 사용해야합니까, 아니면 여러 VertexBuffer 객체를 만들어야합니까?

현재 프로그램에서 쿼드 객체 당 하나의 동적 VertexBuffer를 할당합니다. 이 방법을 사용하면 아무 것도 움직이지 않으면 VertexBuffer를 매핑/매핑 해제 할 필요가 없습니다. 글꼴의 경우 비슷한 텍스트 상자 당 하나의 버퍼를 할당하거나 유사한 방법을 구현할 수 있습니다.

검색 후 모든 개체에 대해 단일 VertexBuffer를 다시 사용하는 방법에 대해 읽었습니다. 꼭지점 캐싱도 나타났습니다. 이것의 장점/단점은 무엇이며, 이전의 방법보다 빠릅니까?

마지막으로 화면에 많은 2 차원 쿼드를 렌더링해야하는 다른 방법이 있습니까?

미리 감사드립니다.

답변

0

DISCARD와 NO_OVERWRITE의 적절한 조합으로 단일 동적 버텍스 버퍼를 사용하는 것이 이러한 종류의 동적 제출을 처리하는 가장 좋은 방법입니다. 드라이버는 DISCARD로 버퍼 이름 바꾸기를 수행하여 GPU 정지를 최소화합니다.

DirectX Tool Kit의 SpriteBatch/SpriteFont 및 PrimitiveBatch에서 사용되는 메커니즘입니다. 해당 소스에서 자세한 내용을 확인할 수 있으며 실제로 필요한 경우 Direct3D 10.x에 적용 할 수 있습니다. 물론 Direct3D 11로 옮기는 것이 더 좋은 선택 일 것입니다.