【发布时间】:2023-03-13 20:45:01
【问题描述】:
我一直在使用 DirectX 12 在 Visual Studio 中用 C++ 开发这款游戏。我在开发过程中使用了 Debug 构建配置,并且图形非常流畅。
当我准备在 Windows Store 上发布游戏以便与作为游戏测试员的朋友分享时,我切换到了发布构建配置。一旦我这样做了,我就开始通过我的墙壁网格看到背景颜色的闪烁。
Here is a short video 显示闪烁。 Here is a longer video 是我在切换到 Release 构建配置之前创建的,显示没有闪烁。
我是 DirectX 12 的新手。这个项目是我的老师。我研究了微软的Direct3D 12 Graphics,我研究了Visual Studio中的DirectX 12模板。 我很高兴能够像我一样掌握 DirectX 12 来制作这款游戏。然后是Release的东西,还有flicker的东西,我很茫然。
这可能是着色器问题吗?还是命令队列问题?还是质地问题?还是别的什么?
【问题讨论】:
-
可能是很多事情。你的通用背景颜色是黄色的吗?否则它可能与法线有关。可能顶点被向后解释。调试版本和发布版本之间有什么变化?
-
@Slipoch,是的,通用背景颜色是黄色。我把视频设为黄色,这样它会脱颖而出。 Debug 版本和 Release 版本之间的唯一显着区别在于 vcxproj 文件,Debug 部分有
<UseDebugLibraries>true</UseDebugLibraries>和<UseDotNetNativeToolchain>false</UseDotNetNativeToolchain>,Release 部分有<UseDebugLibraries>false</UseDebugLibraries>和<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>。 -
只有显着差异?所以如果你把这两行改回来,闪烁就会消失吗?
-
我只是做了一些测试,结果我弄错了。
<UseDotNetNativeToolchain>没有任何效果,但<UseDebugLibraries>是与众不同的。这只是一行,但那一行告诉编译器使用一组完全不同的库,不是吗? -
是的,正如 Chuck 下面所说的,这可能是一个时间问题,调试库可能正在使用低刷新率,发布库可能正在尝试使用更高的刷新率。比特消失的区域是否一致?即:当您从某个角度看它们时,它们不再存在。它总是相同的位置吗?
标签: c++ visual-studio-2015 directx-12