DirectX 10.1 / C ++: как визуализировать текст на спрайте поверх текстур ID3D10Resource *?

В DirectX 10 / 10.1 я хочу визуализировать текст на всех четырех углах нескольких дисплеев, которые отображают текстуру, каждый из которых состоит из ID3D10Resource* prcST с помощью D3DX10CreateTextureFromFile() в моей функции HRESULT OnD3D10CreateDevice( DEVICE_OBJECT* pDeviceObj, WINDOW_OBJECT* pWindowObj )

D3DX10CreateTextureFromFile ( pDeviceObj->pDevice, L"tile1.jpg", NULL, NULL, &prcST, &hr );

Когда я использую что-то вроде ниже в моем OnD3D10rameRender() функция, которая использует спрайт для визуализации текста, мои текстуры не отображаются, а отображается только текст с черным фоном (текст на черном фоне.

Текст, отображаемый в каждом верхнем левом углу 3 экранов, представляет собой «Некоторый текст для отображения»
https://plus.google.com/u/0/+AnandMuglikar/posts/XLNnBRCtTfa

hr = pDeviceObj->pSprite->Begin(0);
std::wstring left = L"Some text to render";
RECT r;
r.top = 0;
r.bottom = pWindowObj->Height;
r.left = 0;
r.right = pWindowObj->Width;
hr = pDeviceObj->pFont->DrawTextW(pDeviceObj->pSprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP | DT_CALCRECT | DT_NOCLIP, D3DXCOLOR(0.0f, 1.0f, 0.0f, .5f));
hr = pDeviceObj->pSprite->Flush();
hr = pDeviceObj->pSprite->End();
pDeviceObj->pDevice->OMSetBlendState(NULL, 0, 0x0000ffff);

Как сделать текст на спрайте поверх альфа-смешанного ID3D10Resource* текстуры?

3 текстуры Edge-blending на 3 дисплеях выглядят так:
https://plus.google.com/u/0/+AnandMuglikar/posts/MSVdrfFpAuW

1

Решение

Отличная работа по выводу текста на экран. Вы используете квад для текстуры? Текстуры нуждаются в массиве вершин для отображения. Функция createtexture загружает только данные изображения в текстурный объект. Затем вам нужно передать объект текстуры вместе с упорядоченным набором вершин, чтобы сформировать сетку, которая будет использоваться для отображения текстуры.

1

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

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

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