为了提高自己,我使用现成的资源。然而,我现在面临着一个困扰我好几天的问题。当我第一次打开游戏时,一切都很好,但是当Windows用户控制(UAC)屏幕通过任何程序出现时,我游戏中的背景视觉效果就会失真。我在这些事情上很新手,如果你能以我能理解的方式帮助我,我会很高兴。非常感谢
原件:
UAC后:
第一个代码:
if (FAILED(hr = ms_lpd3dDevice->TestCooperativeLevel()))
{
if (D3DERR_DEVICELOST == hr)
return DEVICESTATE_BROKEN;
if (D3DERR_DEVICENOTRESET == hr)
return DEVICESTATE_NEEDS_RESET;
return DEVICESTATE_BROKEN;
}
然后这个地方被触发:
case CGraphicDevice::DEVICESTATE_NEEDS_RESET:
m_pyBackground.ReleaseCharacterShadowTexture();
CRenderTargetManager::Instance().ReleaseRenderTargetTextures();
Trace("DEVICESTATE_NEEDS_RESET - attempting");
if (!m_grpDevice.Reset())
{
return DEVICE_STATE_SKIP;
}
CRenderTargetManager::Instance().CreateRenderTargetTextures();
m_pyBackground.CreateCharacterShadowTexture();
break;
1条答案
按热度按时间7gcisfzg1#
根据屏幕截图,似乎在丢失设备和桌面开关后,Windows将用于从低分辨率纹理加载的采样器状态从线性重置为默认值
D3DTEXF_POINT
。您应该通过调用
IDirect3DDevice9.SetSamplerState
方法来恢复状态,方法与启动应用时的方法相同。在这方面,Direct3D 11比9好得多,大多数时候它会自动管理这些状态。