D3D8/D3D9有ID3DXSprite接口,m_pSprite->Begin(D3DXSPRITE_ALPHABLEND),然后m_pSprite->Draw(m_pTexture, NULL, NULL, NULL,0xffffffff); 就可以了。
D3D10/11中微软的D3DX库基本很少很少了,不过DXUT中的代码可以参考下。
根据D3D11 Sample中显示文字的原理:加载透明的文字图片为纹理,将它画到Frame中。
1,创建inputlayout:Float4 VerPos + Float4 Color + Float2 UV
2,在显卡中创建Buffer,VerPos赋值,Color全部赋值为1.0f,UV赋值;
3,创建SampleState
4,创建BlendState
5,编译Shader,可参考:Microsoft DirectX SDK (June 2010)\\Samples\\C++\DXUT11\\Optional\\DXUTgui.cpp 的Line 66那一串字符。
6,Render到Frame上。
注:如果是Hook形式的Overlay,那么无法直接Render到BackBuffer,可创建一个新的RenderTarget,再Copy到BackBuffer。(或者devicecontent->Begin() ... End()之间Render到Buffer)
D3D10/11中微软的D3DX库基本很少很少了,不过DXUT中的代码可以参考下。
根据D3D11 Sample中显示文字的原理:加载透明的文字图片为纹理,将它画到Frame中。
1,创建inputlayout:Float4 VerPos + Float4 Color + Float2 UV
2,在显卡中创建Buffer,VerPos赋值,Color全部赋值为1.0f,UV赋值;
3,创建SampleState
4,创建BlendState
5,编译Shader,可参考:Microsoft DirectX SDK (June 2010)\\Samples\\C++\DXUT11\\Optional\\DXUTgui.cpp 的Line 66那一串字符。
6,Render到Frame上。
注:如果是Hook形式的Overlay,那么无法直接Render到BackBuffer,可创建一个新的RenderTarget,再Copy到BackBuffer。(或者devicecontent->Begin() ... End()之间Render到Buffer)