В 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
Отличная работа по выводу текста на экран. Вы используете квад для текстуры? Текстуры нуждаются в массиве вершин для отображения. Функция createtexture загружает только данные изображения в текстурный объект. Затем вам нужно передать объект текстуры вместе с упорядоченным набором вершин, чтобы сформировать сетку, которая будет использоваться для отображения текстуры.
Других решений пока нет …