我有一个用于绘制文本和精灵的 C++ 代码中的挂钩 DirectX。我对其进行了测试,它很好地绘制到了 2D 应用程序上。但是,当我尝试使用 3D 应用程序(实际上是一些复杂的游戏)时,只能看到文本。由此我推断精灵没有被其他东西透支,因此文本也是如此。我设置标志
SetVertexShader(0);
SetPixelShader(0);
SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
//SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
SetRenderState(D3DRS_ZENABLE, false);
SetRenderState(D3DRS_LIGHTING, FALSE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
由于某种原因,ALPHABLEND
导致精灵在任何应用程序中根本不可见,所以我没有启用它并且它被注释掉了。
是否存在任何在 D3D 上绘制精灵的防故障方法?否则,我应该为它们使用不同的标志/值吗?
另外,我应该为精灵设置哪个 z-index,以防它真的“在”一些其他精灵/对象“之下”?
(我不是任何吸引到设备的作者,我只有挂钩的 DirectX API,甚至不知道我绘制的应用程序代码)。