DirectX 10将纹理绘制到纹理
问题描述:
我试图将纹理绘制到纹理网格物体上。网格基本上是粘贴到屏幕前部的立方体。 (总的来说,我正瞄准一个菜单系统)。经过一番谷歌搜索之后,我发现了如何绘制文本到纹理的令人惊讶的信息。我读过它应该像制作纹理一样简单,将其设置为渲染源,然后对其进行绘制,但我无法弄清楚这一点。DirectX 10将纹理绘制到纹理
任何想法,建议或框架代码与必要的函数调用给我一个开始?
答
当你需要渲染文本的质感,你应该设置渲染到纹理亚当建议,以实际呈现一些文字,你可以做到这一点
创建字体和精灵
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);
当心,精灵渲染更改混合状态,所以一定要将其设置为默认值。如果您只需要“平面上的文本”(网格上无纹理映射),则可以将精灵渲染为主场景而不是纹理。
这真的会帮助我,谢谢! – 2011-12-04 13:56:04
'hr'和'left'是什么? – SirYakalot 2011-12-15 16:59:18
我认为这挺直的......但我应该包括这个: HRESULT hr; std :: wstring left; – 2011-12-19 22:19:08