DirectX 10 Рисование текста в текстуру

Я пытаюсь нарисовать текст в объекте текстурированной сетки. Сетка в основном представляет собой куб, который был приклеен к передней части экрана. (в целом я стремлюсь к системе меню). После небольшого поиска в Google я нашел на удивление мало информации о том, как нарисовать текст на текстуре. Я читал, что это должно быть так же просто, как создать текстуру, установить ее в качестве источника рендеринга, а затем отрисовать на нее, но я не могу понять этого.

Любые идеи, предложения или скелетный код с необходимыми вызовами функций, чтобы дать мне толчок?


person BOMEz    schedule 17.11.2010    source источник


Ответы (2)


Когда вам нужно отрендерить текст в текстуру, вы должны настроить рендеринг в текстуру, как предложил Адам, чтобы фактически отобразить текст, вы можете сделать это

Создать шрифт и спрайт

D3DX10CreateFont(device, 16, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"Verdana", &font);
D3DX10CreateSprite(device, 256, &sprite);

и визуализировать

hr = sprite->Begin(0);
left = L"Some text to render";
RECT r;
r.top = 0;
r.bottom = window->height;
r.left = 0;
r.right = window->width;
hr = font->DrawTextW(sprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP | DT_CALCRECT, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f));
hr = font->DrawTextW(sprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f));
//hr = sprite->Flush();
hr = sprite->End();
device->OMSetBlendState(NULL, 0, 0xffffffff);

Осторожно, рендеринг спрайтов изменяет состояние наложения, поэтому обязательно установите его по умолчанию. Если вам нужен только «текст на плоской поверхности» (без наложения текстуры на сетку), вы можете визуализировать спрайт в основную сцену вместо текстуры.

person Ondrej Petrzilka    schedule 14.12.2010
comment
Я думал, что это было довольно прямо... но я должен включить это: HRESULT hr; std::wstring осталось; - person Ondrej Petrzilka; 20.12.2011

См. раздел «Визуализация в текстуру» в Создание Текстурные ресурсы для очень полезной документации. Это содержит несколько фрагментов примера кода, которые должны помочь вам в дальнейшем.

person Adam Rosenfield    schedule 17.11.2010