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

相關文章
相關標籤/搜索