2010-11-17 133 views
1

我试图将纹理绘制到纹理网格物体上。网格基本上是粘贴到屏幕前部的立方体。 (总的来说,我正瞄准一个菜单系统)。经过一番谷歌搜索之后,我发现了如何绘制文本到纹理的令人惊讶的信息。我读过它应该像制作纹理一样简单,将其设置为渲染源,然后对其进行绘制,但我无法弄清楚这一点。DirectX 10将纹理绘制到纹理

任何想法,建议或框架代码与必要的函数调用给我一个开始?

回答

1

当你需要渲染文本的质感,你应该设置渲染到纹理亚当建议,以实际呈现一些文字,你可以做到这一点

创建字体和精灵

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

当心,精灵渲染更改混合状态,所以一定要将其设置为默认值。如果您只需要“平面上的文本”(网格上无纹理映射),则可以将精灵渲染为主场景而不是纹理。

+0

这真的会帮助我,谢谢! – 2011-12-04 13:56:04

+0

'hr'和'left'是什么? – SirYakalot 2011-12-15 16:59:18

+1

我认为这挺直的......但我应该包括这个: HRESULT hr; std :: wstring left; – 2011-12-19 22:19:08

2

请参阅Creating Texture Resources中的“渲染纹理”一节获取一些非常有用的文档。这提供了几个示例代码片断,可以帮助你顺利完成任务。