我一直在使用DirectX 12在Visual Studio中用C ++开发这个游戏。我在开发过程中使用了Debug构建配置,并且图形非常流畅。
当我准备在Windows应用商店发布游戏以便我可以作为游戏测试人员与朋友分享时,我切换到发布版本配置。一旦我这样做,我就开始通过我的墙壁网格看到背景颜色的闪烁。
显示闪烁的Here is a short video。 我在切换到发布版本配置之前所做的Here is a longer video,显示没有闪烁。
我是DirectX 12的新手。这个项目是我的老师。我研究了Microsoft的Direct3D 12 Graphics,我研究了Visual Studio中的DirectX 12模板。 我感到非常高兴我能够很好地掌握DirectX 12来制作这款游戏,就像我一样。然后释放的东西,闪烁的东西,我不知所措。
这可能是一个着色器问题吗?还是命令队列问题?还是纹理问题?或其他什么?
答案 0 :(得分:2)
DirectX 12是专为图形专家设计的API,与Direct3D 11相比提供了大量的应用程序控制。该控件的成本是应用程序开发人员负责获取所有内容 ,确保它可以在各种硬件上运行,并且可以自己稳健地处理压力情况和错误情况。
有很多方法可以让你在DirectX 12中获得'闪烁'效果。常见的一种方法是在你调用Draw
和你之间的时候,你的图形内存不能保持常量,IB,VB等不变。实际绘图在GPU上完成的时间通常会在几帧之后发生。这种同步是正确使用API的关键挑战。有关示例解决方案,请参阅DirectX Tool Kit for DirectX 12中的GraphicsMemory
。
如果您不熟悉DirectX开发,我强烈建议从DirectX 11开始。它基本上是相同的功能,但负责缓冲区重命名,资源障碍,围栏,VRAM过度使用等。