2013-01-24 4 views
0

우리 게임의 정적 배경으로 사용되는 여러 메쉬 (예 : 나무, 자동차 등)가 포함 된 모델 파일이 있습니다. 내 목표는 모델의 정점과 인덱스를 두 개의 버퍼로 저장하고 이러한 버퍼를 GPU에 할당하는 것입니다. 그러나, 나는가는 길에 약간 혼란 스럽다.모델의 버텍스 버퍼와 인덱스 버퍼에 대한 혼동

Riemer's XNA Tutorial은 모델 자체가 하나의 큰 정점 버퍼와 모든 메쉬 (및 meshparts)의 정보를 포함하는 하나의 큰 인덱스 버퍼를 가지고 있지만 이러한 버퍼에 액세스 할 수있는 것 같지 않습니다. 그러나 ModelMeshParts의 버퍼에 액세스 할 수는 있지만 모든 버퍼를 단일 버퍼로 연결할 수는 없습니다.

내 생각 엔 모델 프로세서를 확장하여 모델 정점과 인덱스를 런타임에 배열에 저장하는 것입니다. Riemer는 버퍼가 이미 정의되어 있다고 말하기 때문에 더 쉬운 방법이 있습니까? 저는 그 진술에 대해 혼란스러워합니다.

감사합니다.

답변

1

실제로 전체 모델에는 단지 하나의 정점 버퍼와 1 개의 인덱스 버퍼가 있습니다. 모든 ModelMeshPart에서 노출 된 Vertex 버퍼는 전체 모델의 정점 버퍼이며 다른 MMP에서 노출 된 버퍼와 동일합니다. 연결하지 않아도 전체 버퍼가 각 MMP에 있습니다.

각 MMP에는 해당 버퍼의 고유 시작 인덱스가 있으며 각 MMP에는 해당 MMP에 사용되는 시작 인덱스에서 연속되는 정점 수를 나타내는 자체 변수가 있습니다. 모델의 VB의 다이어그램 그래서

enter image description here

ModelMesh[1]->ModelMeshPart[1] 300의 시작 인덱스를 가지고 있으며, 꼭지점의 수는 MMP를 그릴 때 75 그래서이 방법으로, 장치가 만 몇 가지를 사용하는 알고있다 전체 VB의 정점.

+0

이 정보를 제공하고 혼동을 해 주셔서 감사합니다. –