c++ - 如何在 Visual Studio 2017 中启动 HLSL 调试器?

标签 c++ visual-studio-2017 windows-10 directx hlsl

我找不到在 Visual Studio 2017 中启动 HLSL 调试器的选项。

Microsoft 文档指示从 图形流水线阶段窗口或图形像素历史

https://msdn.microsoft.com/en-us/library/hh873197.aspx

但是,我不知道那些是什么或如何得到它们

当我直接在 visual studio IDE 中的 hlsl 代码中设置断点时,它只是在空白的红色圆圈上显示“The Breakpoint will not currently be hit”。 我假设我需要在 hlsl 调试器中打开 hlsl 代码,以便它在线中断。

我正在 x64 Debug模式下运行新项目模板 DirectX 11 App(Universal Windows) 并在顶点和像素着色器中设置断点。

谢谢,

最佳答案

  1. 确保您的着色器编译时支持调试 - 如果您使用的是 HLSL 编译器,请使用 /Zi 选项。
  2. 确保创建 DX 设备时启用了调试(D3D11_CREATE_DEVICE_DEBUG 标志)。
  3. 转到主菜单 -> 调试 -> 图形 -> 启动图形调试,启动 GFX 调试 session 。这将生成一个要求提升权限的窗口,以弹出、启动您的程序并显示带有“捕获帧”按钮和时间轴的诊断 session 窗口。
  4. 现在让您的应用程序显示所需的图像并使用相应的按钮捕获 iterest 的帧。捕获的帧屏幕截图将显示在列表中。
  5. 关闭您的应用程序。这将触发诊断 session 的完成(一些后处理),这将需要一些时间。
  6. 在捕获的帧列表中单击帧名称(蓝色)。这将打开 VS 图形分析器窗口 - 这是您实际调试图形的地方。
  7. 在中间会有一个(复制的)帧渲染屏幕截图 - 您可以单击它的任意位置,在像素历史窗口中应该有一个修改该像素的绘制调用列表。通过展开此列表,您应该能够找到感兴趣的着色器的调用。它应该有“播放”三角形按钮,用于启动着色器调试并跳转到着色器代码,您可以在其中检查变量、设置断点和其他内容。
  8. 或者在左侧会有事件列表,其中包含所有管道修改和绘制(用画笔标记)调用。在那里找到感兴趣的绘图调用并选择它。在 Pipeline stages 窗口中应该有一个图表,其中包含每个阶段的产品屏幕截图以及相应的着色器链接和启动着色器调试的“播放”按钮。

关于c++ - 如何在 Visual Studio 2017 中启动 HLSL 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50591937/

相关文章:

c++ - 二维 vector ( vector 下标超出范围)

c++ - 在增量循环的情况下如何使用 SSE?

nuget - dotnet new --install 正在查看错误的 NuGet 服务器

visual-studio - 通过 Manage NuGet Packages 安装 Bootstrap 后,bootstrap 文件不显示以供引用

r - 从 R 连接到 amazon redshift 时出错 - windows 10

windows-services - Windows Process Activation Service无法启动-错误13

azure - 如何自动启动 Azure VM Windows 10 并自动登录您的用户帐户?

c++ - Linux C++ 二进制命名空间

c++ - 如何在不使用 C++ 管理员权限的情况下设置 AD 属性值?

visual-studio-2017 - 如何在Asp.net core 2.0 mvc项目中将Bootstrap v3.3.7更新到v4.0.0 beta2?