netlib.narod.ru< Назад | Оглавление | Далее >

9.2. CD3DFont

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.

9.2.1. Создание экземпляра CD3DFont

Экземпляр CD3DFont создается также как обычный объект C++ с помощью следующего конструктора:

CD3DFont(
     const TCHAR* strFontName,
     DWORD dwHeight,
     DWORD dwFlags=0L
);

После создания объекта CD3DFont для инициализации шрифта мы должны вызвать следующие методы (в указанном порядке):

Font = new CD3DFont("Times New Roman", 16, 0); // создание экземпляра
Font->InitDeviceObjects(Device);
Font->RestoreDeviceObjects();

9.2.2. Рисование текста

Теперь, когда мы создали и инициализировали объект CD3DFont, можно нарисовать какой-нибудь текст. Рисование текста выполняет следующий метод:

HRESULT CD3DFont::DrawText(
     FLOAT x,
     FLOAT y,
     DWORD dwColor,
     const TCHAR* strText,
     DWORD dwFlags=0L
);

Пример использования метода:

Font->DrawText(20, 20, 0xff000000, "Hello, World");

9.2.3. Очистка

Перед удалением объекта CD3DFont необходимо вызвать ряд процедур очистки, как показано в приведенном ниже фрагменте кода:

Font->InvalidateDeviceObjects();
Font->DeleteDeviceObjects();
delete Font;

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz