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

9.3. D3DXCreateText

Функция D3DXCreateText создает трехмерную сетку, представляющую строку текста. На рис. 9.1 показана такая трехмерная сетка, отображаемая приложением FontMesh3D, которое находится в сопроводительных файлах к данной главе.


Рис. 9.1. Трехмерный текст, созданный функцией D3DXCreateText

Рис. 9.1. Трехмерный текст, созданный функцией D3DXCreateText


Прототип функции выглядит следующим образом:

HRESULT D3DXCreateText(
     LPDIRECT3DDEVICE9 pDevice,
     HDC hDC,
     LPCTSTR pText,
     FLOAT Deviation,
     FLOAT Extrusion,
     LPD3DXMESH* ppMesh,
     LPD3DXBUFFER* ppAdjacency,
     LPGLYPHMETRICSFLOAT pGlyphMetrics
);

В случае успешного завершения функция возвращает D3D_OK.

Следующий фрагмент кода показывает как создать изображающую текст трехмерную сетку с помощью рассматриваемой функции.

// Получение дескриптора контекста устройства
HDC hdc = CreateCompatibleDC(0);

// Заполнение структуры LOGFONT, описывающей свойства шрифта
LOGFONT lf;
ZeroMemory(&lf, sizeof(LOGFONT));

lf.lfHeight    = 25;    // в логических единицах
lf.lfWidth     = 12;    // в логических единицах
lf.lfWeight    = 500;   // насыщенность,
                        // диапазон 0(тонкий) - 1000(жирный)
lf.lfItalic    = false;
lf.lfUnderline = false;
lf.lfStrikeOut = false;
lf.lfCharSet   = DEFAULT_CHARSET;
strcpy(lf.lfFaceName, "Times New Roman"); // гарнитура шрифта

// Создаем шрифт и выбираем его в контексте устройства
HFONT hFont;
HFONT hFontOld;
hFont = CreateFontIndirect(&lf);
hFontOld = (HFONT)SelectObject(hdc, hFont);

// Создаем представляющую текст трехмерную сетку
ID3DXMesh* Text = 0;
D3DXCreateText(_device, hdc, "Direct3D", 0.001f, 0.4f, &Text, 0, 0);

// Восстанавливаем бывший до этого шрифт и освобождаем ресурсы
SelectObject(hdc, hFontOld);
DeleteObject(hFont);
DeleteDC(hdc);

Теперь вы можете визуализировать трехмерную сетку просто вызвав метод сетки DrawSubset:

Text->DrawSubset(0);

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

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