DirectX 10.1 / C ++:如何在精灵上渲染ID3D10Resource *纹理上的文本?

时间:2014-01-13 07:40:49

标签: c++ text textures sprite directx-10

在DirectX 10 / 10.1中,我希望在多个显示的所有四个角上渲染文字,这些四个角在我的函数ID3D10Resource* prcST中使用D3DX10CreateTextureFromFile()显示每个由HRESULT OnD3D10CreateDevice( DEVICE_OBJECT* pDeviceObj, WINDOW_OBJECT* pWindowObj )组成的纹理/ p>

D3DX10CreateTextureFromFile ( pDeviceObj->pDevice, L"tile1.jpg", NULL, NULL, &prcST, &hr );

当我在我的OnD3D10rameRender()函数中使用类似下面的内容时,使用精灵来渲染文本,我的纹理不会渲染,但只有文字会呈现黑色背景。(黑色背景上的文字。

在3个显示的每个左上角呈现的文本是“要呈现的某些文本”
https://plus.google.com/u/0/+AnandMuglikar/posts/XLNnBRCtTfa

hr = pDeviceObj->pSprite->Begin(0);
std::wstring left = L"Some text to render";
RECT r;
r.top = 0;
r.bottom = pWindowObj->Height;
r.left = 0;
r.right = pWindowObj->Width;
hr = pDeviceObj->pFont->DrawTextW(pDeviceObj->pSprite, left.c_str(), -1, &r, DT_LEFT | DT_TOP | DT_CALCRECT | DT_NOCLIP, D3DXCOLOR(0.0f, 1.0f, 0.0f, .5f));
hr = pDeviceObj->pSprite->Flush();
hr = pDeviceObj->pSprite->End();
pDeviceObj->pDevice->OMSetBlendState(NULL, 0, 0x0000ffff);

如何通过alpha混合ID3D10Resource*纹理在精灵上渲染文字?

3个显示器上的3个边缘融合纹理如下所示:
https://plus.google.com/u/0/+AnandMuglikar/posts/MSVdrfFpAuW

1 个答案:

答案 0 :(得分:1)

很棒的工作是在屏幕上呈现文字。你是否使用四边形纹理?纹理需要一组顶点才能显示。 createtexture函数仅将图像数据加载到纹理对象中。然后,您必须传递纹理对象以及一组有序的顶点,以形成将用于显示纹理的网格。