Путаница с вершинным буфером и индексным буфером модели
У меня есть файл модели, содержащий несколько сеток (например, дерево, автомобиль,...), который используется в качестве статического фона для нашей игры. Моя цель - сохранить вершины и индексы модели в виде двух буферов и назначить эти буферы графическому процессору. Тем не менее, я немного запутался в пути.
В этом уроке RNA RIMER говорится, что в самой модели есть один большой вершинный буфер и один большой индексный буфер, содержащий информацию обо всех его сетках (и сеточных частях), но доступ к этим буферам не представляется возможным. Однако можно получить доступ к буферам ModelMeshParts, но я не могу объединить их все в один буфер.
Я полагаю, что расширение процессора модели позволяет хранить вершины и индексы модели в массивах во время выполнения. Есть ли более простой способ сделать это, поскольку Ример говорит, что эти буферы уже определены? Я запутался в этом заявлении.
Спасибо, что ответили.
1 ответ
На самом деле, существует только 1 буфер вершин и 1 буфер индекса для всей модели. Буфер вершин, который предоставляется в любом ModelMeshPart, является буфером вершин всей модели, и это тот же буфер, который предоставляется в любых других MMP. Не нужно их объединять, весь буфер находится в каждом MMP.
У каждого MMP есть свой собственный начальный индекс этого буфера, и у каждого MMP есть своя собственная переменная, которая описывает количество вершин, которые являются последовательными от начального индекса, которые используются для этого конкретного MMP.
Итак, на этой диаграмме модели VB, ModelMesh[1]->ModelMeshPart[1]
имеет начальный индекс 300, а его число вершин равно 75. Таким образом, при рисовании MMP устройство знает, что нужно использовать только те несколько вершин всего VB.