Используемый вами интерфейс ID3DXSPRITE уже довольно эффективен.Убедитесь, что все ваши вызовы отрисовки спрайта выполняются в одном пакете, если это возможно, между начальными и конечными вызовами спрайта.Это позволяет спрайтовому интерфейсу организовывать рисование наиболее эффективным способом.
Для дополнительной производительности вы можете загрузить несколько текстур меньшего размера в одну текстуру большего размера и использовать координаты текстур для их вывода.Это делает так, чтобы текстуры не приходилось менять местами так часто.См .:
http://nexe.gamedev.net/directknowledge/default.asp?p=ID3DXSprite
Тип файла, который вы используете для текстур, не имеет значения, поскольку они предварительно загружены в текстуры.Убедитесь, что вы загрузили их все в текстуры один раз, когда загружается игра / уровень.После того, как вы загрузили их в текстуры, не имеет значения, в каком формате они изначально были.
Если вы все еще не получаете желаемую производительность, попробуйте использовать PIX для профилирования вашего приложения и найти, где на самом деле существуют узкие места..
Редактировать:
Это слишком долго, чтобы помещаться в комментарии, поэтому я буду редактировать этот пост.
Когда я говорю, что меняются текстуры, яозначает связывание их со стадией текстуры с помощью SetTexture.Каждый раз, когда вызывается SetTexture, происходит небольшое снижение производительности, поскольку оно меняет состояние стадии текстуры.Обычно эта задержка довольно мала, но может быть плохой, если DirectX вынужден вытягивать текстуру из системной памяти в видеопамять.
ID3DXsprite переупорядочивает отрисовки между начальными и конечными вызовами.Это означает, что SetTexture обычно вызывается только один раз для каждой текстуры, независимо от того, в каком порядке вы их рисуете.
Часто стоит загружать маленькие текстуры в большую.Например, если бы можно было уместить все маленькие текстуры в одну большую, то стадия текстуры могла бы просто оставаться привязанной к этой текстуре для всех рисунков.Обычно это дает заметное улучшение, но тестирование - это единственный способ узнать наверняка, насколько это поможет.Это выглядело бы ужасно, но вы могли бы просто добавить любую большую текстуру и сделать вид, что она комбинированная, чтобы проверить, какая разница в производительности.