|

楼主 |
发表于 2010-8-16 20:00:00
|
显示全部楼层
Re:请教Directx如何动态的更新贴图内容。
已经确认,游戏的实现确实是在一个贴图上绘制文字,然后显示这个贴图,实现的弹出提示效果。
hook这个call写了一个函数
void __stdcall WriteTextTex(LPDIRECT3DTEXTURE9 lpTex,DWORD dwSrcX,DWORD dwSrcY,const PWCHAR pText,DWORD dwLen,DWORD dwColor)
{
RECT rect;
D3DXVECTOR3 vSrcPos;
IDirect3DSurface9 *p_dds;
HDC hdc;
D3DXSaveTextureToFileW(L"test.dds",D3DXIFF_DDS,lpTex,NULL);
lpTex->GetSurfaceLevel(0,&p_dds);
p_dds->GetDC(&hdc);
SelectObject(hdc, hfont);
SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc, dwColor);
TextOutW(hdc,dwSrcX,dwSrcY,pText,dwLen);
p_dds->ReleaseDC(hdc);
p_dds->Release();
D3DXSaveTextureToFileW(L"test1.dds",D3DXIFF_DDS,lpTex,NULL);
}
用上面这个函数替换了游戏原本call 实现了中文显示,但是又出现一个问题。
TextOutW绘制的文字是是白色,但是和贴图底色合并后会有透明效果。
游戏原本显示的字体无透明效果,实际上去掉贴图底色也是纯白色的字体。
现在请教,如何绘制字体能去掉透明效果?
|
|