Directx9 和 Windows UAC 问题。如何修复地面变形?

问题描述 投票:0回答:1

为了提高自己,我会利用现成的资源。然而,我现在面临着一个困扰我好几天的问题。当我第一次打开游戏时,一切正常,但当通过任何程序出现 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;
windows textures directx alpha uac
1个回答
0
投票

根据屏幕截图,似乎在丢失设备和桌面切换后,Windows 会将您用于从低分辨率纹理加载的采样器状态从线性重置为默认值,即

D3DTEXF_POINT

您应该通过调用

IDirect3DDevice9.SetSamplerState
方法来恢复状态,就像启动应用程序时一样。

附注在这方面,Direct3D 11 比 9 好得多,大多数时候它会自动管理这些状态。

© www.soinside.com 2019 - 2024. All rights reserved.