TBH рисование 2 три (я предполагаю, что это то, из чего сделан ваш спрайт), изменение трансформации и рисование ОЧЕНЬ неэффективно.
Вам гораздо лучше вручную преобразовать 4 вершины в 1 большой динамический буфер вершин и рендерить все в один. То же самое касается текстур, применяемых к спрайтам. Хранение их в одной большой текстуре избавит вас от многих изменений состояния и позволит в целом выполнять рендеринг намного быстрее.
Редактировать: Выполнение нескольких вызовов DrawPrimitive / DrawIndexedPrimitive выполняется очень медленно. Для каждой установленной вами матрицы вам нужно сделать отдельный вызов отрисовки. Чтобы избежать этого, нужно применить свою матрицу к каждой из 4 вершин самостоятельно, а затем скопировать их в уже преобразованный буфер вершин. Это означает, что вы можете сделать один вызов с помощью набора матриц идентичного мира.
Оглядываясь назад, вполне вероятно, что ID3DXSprite абстрагирует вас от этого, поскольку вы не можете задавать углы. Спектакль действительно отстой, если он не отвлечет вас от этого.
Очень маловероятно, однако, что он абстрагируется от проблемы с текстурой. Таким образом, было бы лучше хранить все кадры спрайта в одной текстуре (и, возможно, все кадры нескольких спрайтов в одной текстуре). Так что в этом случае вам лучше всего передать одну IDirect3DTexture и установить pSrcRect в подстекло, в котором вы когда-либо находились, вместо использования отдельных текстур. Чем меньше текстур вы используете, тем лучше будет производительность.