GLSL 调试技巧入门【OpenGL】

这是我参与8月更文挑战的第12天,活动详情查看: 8月更文挑战编程

使用Nsight图形调试器

调试 GLSL 着色器代码是出了名的困难。与 C++ 或 Java 等典型语言的编程不一样,着色程序在哪里失败每每是不明确的。一般,一个着色器错误表现为一个空白屏幕,不提供任何关于错误本质的线索。更使人沮丧的是,没有办法在运行时打印出着色器变量的值,就像人们一般在跟踪一个难以捉摸的 bug 时所作的那样。 缺少显示着色器变量的简单能力是一个严重的障碍,因为这个缘由,显卡制造商有时在硬件中提供在运行时从着色器中提取信息的功能,并以图形调试器的形式构建了访问信息的工具。每一个制造商的调试工具只能在该制造商的显卡存在的状况下工做。NVIDIA 的图形调试器是一个更大的工具套件 Nsight 的一部分, AMD 也有一个相似的工具套件叫作 CodeXL安全

关于英伟达 Nsight

Nsight 是一套 NVIDIA 的工具,它包含一个图形调试器,当程序运行时,它能够查看 OpenGL 图形管道的各个阶段,包括着色器。不须要更改或添加任何代码。只需在启用 Nsight 的状况下运行现有程序。Nsight 容许在运行时检查着色器,好比查看着色器的统一变量的当前内容。有些版本甚至容许在运行时更改着色器代码。markdown

有适用于 WindowsLinux/MacOSNsight 版本,能够与微软的 Visual Studio (VS)Eclipse IDE 交互。咱们只讨论 WindowsVisual Studio框架

Nsight 只能与 NVIDIA 显卡兼容;它不适用于英特尔或 AMD 显卡。完整的支持卡列表可在 NVIDIA 网站查询工具

Nsight 正在迅速变化,Nsight 可能会有更多使人兴奋的变化和发展oop

设置 Nsight

有多种方法能够设置 Nsight 并将其整合到 Visual Studio 中。根据你安装的版本,Nsight 菜单将被添加到最顶部的 VS 菜单或做为 “扩展” 菜单的子菜单。咱们安装 Nsight 的方式以下:post

1. 安装 NVIDIA Nsight Graphics,网址为 developer.nvidia.com/nsight-grap… 咱们安装了2020.4版本。网站

2. 在 Visual Studio 中,使用 Extensions►Manage Extensions 来搜索和安装 Nsight 集成。“Nsight” 菜单应该出如今顶部菜单栏或扩展项下的子菜单。spa

在 Nsight 中运行 C++ / OpenGL 应用程序

  1. 加载但愿运行的程序。在 “Nsight” 菜单中,选择 “Frame Debugger” 或 “Start Graphics Debugging” (取决于你的版本和安装)来运行你的程序,以下所示:

image.png

  1. 可能会弹出一个窗口,询问您是否想要“无安全链接?” 若是是,那么点击“链接不安全”。可能还会出现一个窗口,显示与 Nsight 的链接,并询问您是否但愿启动帧调试器。若是是,那么点击 “Launch Frame Debugger” ,以下所示:

image.png

  1. 而后应该执行 C++ /OpenGL 图形程序。根据您的安装,各类窗口可能会出如今您正在运行的程序旁边。Nsight也能够在你运行的程序上叠加一些信息,以下所示:

image.png

  1. 程序运行后,在你但愿检查的任何区域与它进行交互。此时,您须要暂停执行。在一些安装中,这是经过 Nsight菜单中选择 “暂停和捕获帧” 来完成的,而在其余版本中,这是经过在运行窗口中按 CTRL+Z ,而后单击 “暂停进行实时分析” 按钮来完成的。

image.png

  1. 应该会出现 Frame 调试器屏幕,以及一个 HUD 工具栏和一个水平选择工具,称为 “scrubber” 。您的程序可能会在此时冻结。在调试器屏幕的中心是一个左栏,上面有每一个着色器阶段的按钮。例如,你能够为 “Vertex Shader” 突出 “VS” ,在其右侧较大的中心框中,你能够向下滚动并查看统一变量的内容(假设你在它上面选择了“ API 检查器”)。下图中,“proj_matrix” 右侧的小框已经打开,显示出 4x4 投影矩阵的内容

image.png

  1. 出现的另外一个有趣的窗口与正在运行的程序类似。这个窗口的底部有一个时间轴,您能够经过单击来查看绘制在框架上的项目序列。下面是一个例子。注意,光标已单击时间轴的左侧区域,它将显示到该点的那些项目

image.png

有关如何最大限度地利用 Nsight 工具的详细信息,请参阅 Nsight 文档。3d

相关文章
相关标签/搜索