Я читал, что объединение сеток в одну сетку и рендеринг намного быстрее, потому что вы отправляете все свои данные за один раз. Я использую DirectX9.0C, фиксированная функция, C ++. У меня есть много LP3DXMESH, которые я хотел бы объединить и отправить за один раз для рисования.
Я Google для ответа, я получаю нежелательные результаты. Как я могу это сделать?
Объединить несколько сеток в одну довольно просто, следуя нескольким критериям.
Все ваши сетки должны иметь одинаковый размер / расположение вершин (или декларация)
Учитывая, что, скажем, у вас есть 3 модели:
Модель 1 имеет 10 вершин и 21 индекс
Модель 2 имеет 20 вершин и 30 индексов
Модель 3 имеет 25 вершин и 45 индексов
Создайте буфер вершин, который сможет хранить все данные (например: 10 + 20 + 25 вершин)
Скопируйте каждую вершину из Модели 1, затем из Модели 2 и из Модели 3 в этот новый вершинный буфер.
Создайте индексный буфер таким же образом, что и буфер вершин (например: 21 + 30 + 45 индексов)
Теперь для первой модели, просто скопируйте индексы.
Для модели 2 вам нужно скопировать индексы, но добавить 10 к каждому индексу (размер вашего первого буфера вершин).
Для модели 3 вы делаете то же самое, что и для номера два, но должны добавить 10 + 20 (сумма на каждый предыдущий размер).
Создайте свой меш с новым буфером.
По некоторым соображениям:
Других решений пока нет …