DirectX 10 Рисование текста в текстуру - PullRequest
1 голос
/ 17 ноября 2010

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

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

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

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

1 голос
/ 14 декабря 2010

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

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

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);

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

...