Как нарисовать D3DXFont используя D3DXSprite в DirectX 9 как можно быстрее?

У меня много текста для рисования. Если я вызываю D3DXFont :: DrawText с первым параметром, равным NULL, я получаю ужасную производительность.

Я слышал, что использование D3DXFont в сочетании с D3DXSprites значительно ускоряет работу.

Как мое приложение должно рисовать строки?
Каждая строка струится псевдо-тенью. Это означает, что я рисую каждую строку 4 раза черным цветом:
х + 1, у + 1
х — 1, у + 1
х — 1, у — 1
х + 1, у — 1
и 1 раз в реальном цвете. Это делает очень красиво выглядящие всегда читаемые строки. Я даже переключился на пиксельные шрифты для более быстрого рендеринга.

Теперь вызовите эту строку с тенью (ShadowString).

Каждый кадр, который я рисую, 256 (в худшем случае) из этих ShadowStrings на экране.

Я хотел бы знать, как использовать спрайты (или любую другую технику), чтобы максимально ускорить рисование этих строк). Теперь я получаю 30 FPS в приложении. Но я нацеливаюсь на 120 мин. И проблема только в том, что текст рисования вещь.

0

Решение

Конечно, вы должны профилировать ваше приложение перед любой оптимизацией, но, по правде говоря, D3DXFont/D3DXSprites и «быстрый» это взаимоисключающие понятия. Если они не подходят, просто не используйте их.
Используйте сторонние библиотеки или создайте свой собственный спрайт / рендеринг шрифтов.

Недавно я ответил о том, как это сделать здесь: Как нарисовать линию и шрифт без D3DX9 в DirectX 9?
Кроме того, Google для «шрифта спрайта», «пакетирования спрайта», «текстурных атласов», «рендеринга TTF». Это не очень сложно, если вы знакомы с API (в частности, буферами вершин и текстурированием), и в Интернете есть множество примеров. Не стесняйтесь искать примеры D3D11 или OpenGL, принципы одинаковы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector