2010-11-17 167 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中的「渲染紋理」一節獲取一些非常有用的文檔。這提供了幾個示例代碼片斷,可以幫助你順利完成任務。