Я хочу нарисовать огромное количество одинаковых текстурных квадрациклов (картирование плитки). Текстурированные квадратики будут иметь одинаковый размер и одинаковые координаты текстуры, но разные координаты на экране.Огромное количество одинаковых текстурированных квадрациклов
Я использую VertexBuffer
и DrawPrimitive(D3DPT_TRIANGLELIST, ...)
Если каре расположены один за другим, я могу использовать текстуру повторять (набор координаты текстуры> 1), и только 6 вершин в VertexBuffer
.
Если квадроциклы находятся в другом положении, я создаю 6 вершин для каждого квадрата в VertexBuffer
, и этот метод имеет низкую производительность (менее 60 FPS, начиная с 1500000 вершин на мощном компьютере).
SOFTWARE_VERTEXPROCESSING
используется для целей совместимости.
Есть ли какой-либо лучший подход для рисования огромного количества небольших текстурных квадратов в другом положении?
Заранее спасибо.
Я думаю, что 'SOFTWARE_VERTEXPROCESSING' является вероятным подозреваемым в плохой производительности - вы проводили сравнение с этим флагом/без этого? –
'HARDWARE_VERTEXPROCESSING' решает ситуацию и дает постоянную 60 FPS (100+ FPS без VSync), но приложение должно также работать на аппаратных средствах, которые поддерживают только« SOFTWARE_VERTEXPROCESSING », например, на старых чипсетах Intel. Интересно, есть ли другое решение, кроме создания вершин для каждого квадрата в VertexBuffer (как уже упоминалось, размеры квадрата и текстуры одинаковы, поэтому в основном только позиция на экране отличается). – Demion
Вы можете работать с двумя вершинами. Один для квадроцикла и один с позициями. В vertexshader вы объединяете их для правильного позиционирования. Вы визуализируете черепичную плоскость (2D или 3D?) Или блокируете как minecraft или какова цель? – Gnietschow