netlib.narod.ru | < Назад | Оглавление | Далее > |
DirectX SDK предоставляет полезный вспомогательный код, который находится а папке \Samples\C++\Common корневого каталога DXSDK. Среди этого кода есть класс CD3DFont, который отображает текст используя текстурированные треугольники и Direct3D. Поскольку CD3DFont использует для визуализации Direct3D, а не GDI, он работает гораздо быстрее, чем ID3DXFont. Однако, в отличие от ID3DXFont, CD3DFont не поддерживает сложные шрифты и форматирование. Если вам нужна скорость и достаточно простых шрифтов, класс CD3DFont — это ваш выбор.
Чтобы использовать класс CD3DFont необходимо добавить к приложению файлы d3dfont.h, d3dfont.cpp, d3dutil.h, d3dutil.cpp, dxutil.h и dxutil.cpp. Эти файлы находятся в папках Include и Src, которые расположены в ранее упоминавшейся папке Common.
Экземпляр CD3DFont создается также как обычный объект C++ с помощью следующего конструктора:
CD3DFont( const TCHAR* strFontName, DWORD dwHeight, DWORD dwFlags=0L );
strFontName — Завершающаяся нулем строка, задающая имя гарнитуры шрифта.
dwHeight — Высота шрифта.
dwFlags — Необязательные дополнительные флаги; параметру можно присвоить 0 или использовать произвольную комбинацию флагов D3DFONT_BOLD, D3DFONT_ITALIC, D3DFONT_ZENABLE.
После создания объекта CD3DFont для инициализации шрифта мы должны вызвать следующие методы (в указанном порядке):
Font = new CD3DFont("Times New Roman", 16, 0); // создание экземпляра Font->InitDeviceObjects(Device); Font->RestoreDeviceObjects();
Теперь, когда мы создали и инициализировали объект CD3DFont, можно нарисовать какой-нибудь текст. Рисование текста выполняет следующий метод:
HRESULT CD3DFont::DrawText( FLOAT x, FLOAT y, DWORD dwColor, const TCHAR* strText, DWORD dwFlags=0L );
x — координата x в экранном пространстве с которой начинается рисование текста.
y — координата y в экранном пространстве с которой начинается рисование текста.
dwColor — Цвет текста.
strText — Указатель на рисуемую строку.
dwFlags — Необязательные флаги визуализации; можете присвоить этому параметру 0 или указать произвольную комбинацию флагов D3DFONT_CENTERED, D3DFONT_TWOSIDED, D3DFONT_FILTERED.
Пример использования метода:
Font->DrawText(20, 20, 0xff000000, "Hello, World");
Перед удалением объекта CD3DFont необходимо вызвать ряд процедур очистки, как показано в приведенном ниже фрагменте кода:
Font->InvalidateDeviceObjects(); Font->DeleteDeviceObjects(); delete Font;
netlib.narod.ru | < Назад | Оглавление | Далее > |