【发布时间】:2022-07-25 18:00:14
【问题描述】:
https://1drv.ms/u/s!AkVRV9eGJ20rgTu13uTcNkhp0eZb?e=lwMe70
该链接将您带到我的 OneDrive,您可以在其中下载我的 Visual Studio 2022 解决方案和项目(它是一个 17.7KB 的 .7z 文件),它只有显示 win32 窗口的代码等等。我还附上了一张图片,告诉您 DirectX 诊断工具报告的 DirectX 规格。图片为下图:
问题就是标题所说的,我想让你看看你是否可以编译它没有问题,我担心它可能会失败,因为我不能使用 Direct3D 11.1(Direct3D 11.1 是必需的吗?我可以'找不到有关它的信息),但后来我尝试使用 D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY 创建标志(https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_create_device_flag)创建 D3D 设备,只是为了测试我是否可以使用 Direct3D 11.1(因为在 Direct3D 11.1 之前不支持该标志)并且创建成功...所以我不知道了...
【问题讨论】:
-
@PaulSanders 当然它返回非零,它返回 0x887A0001 (DXGI_ERROR_INVALID_CALL)。你显然还没有看过代码。为什么你认为我没有努力去了解正在发生的事情?
-
当您使用 DirectX 编程时,请确保在 dev.xml 中启用“调试层”。请参阅 docs.microsoft.com/en-us/windows/win32/direct3d11/… 和 walbourn.github.io/direct3d-sdk-debug-layer-tricks。这将向您展示失败的原因:“必须使用 CreateSwapChainForComposition 或 CreateSwapChainForCoreWindow 使用 DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER 标志创建 Alpha 混合交换链。”
-
@zeleska 你说得对,我很抱歉,评论已删除。
-
@SimonMourier 谢谢!而且你知道,在发布这个问题之前我确实阅读了“使用调试层调试应用程序”,并且我确实使用标志激活了它,但我认为“调试输出”意味着“抛出异常”,所以当我迷失了调试器没有抛出任何东西,直到不久前我才知道它到底是什么,哦,我的上帝......,再次感谢你,如果你发表你的评论作为答案,我会接受它。
标签: directx directx-11 direct3d direct3d11 dxgi