我試圖將紋理繪製到紋理網格物體上。網格基本上是粘貼到屏幕前部的立方體。 (總的來說,我正瞄準一個菜單系統)。經過一番谷歌搜索之後,我發現瞭如何繪製文本到紋理的令人驚訝的信息。我讀過它應該像製作紋理一樣簡單,將其設置爲渲染源,然後對其進行繪製,但我無法弄清楚這一點。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);
當心,精靈渲染更改混合狀態,所以一定要將其設置爲默認值。如果您只需要「平面上的文本」(網格上無紋理映射),則可以將精靈渲染爲主場景而不是紋理。
請參閱Creating Texture Resources中的「渲染紋理」一節獲取一些非常有用的文檔。這提供了幾個示例代碼片斷,可以幫助你順利完成任務。
這真的會幫助我,謝謝! – 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