星夜落尘吧 关注:5贴子:146
  • 2回复贴,共1

在D3D11游戏上Overlay透明图片成功....

只看楼主收藏回复

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)


IP属地:上海1楼2013-03-01 16:46回复
    你好,我最近也在搞d3d11 hook及贴图,hook很简单,就是半透明贴图感觉很难,能否给个源码参考?原理看起来简单,就是不知道怎么搞


    IP属地:福建3楼2016-07-19 14:40
    收起回复