没有任何秘密的 API:Vulkan* 简介第 1 部分:序言
目錄
教程 1: Vulkan* – 序言
加載 Vulkan Runtime 庫并獲取導出函數指示器
獲取全局級函數指示器
創建 Vulkan 實例
獲取實例級函數指示器
創建邏輯設備
設備屬性
設備特性
隊列、隊列家族和命令緩沖區
獲取設備級函數指示器
檢索隊列
Tutorial01 執行
清空
結論
前往第 2 部分
教程 1:Vulkan* – 序言
我們從不顯示任何內容的簡單應用開始。 因為教程太長,因此本文不展示完整的源代碼(以及窗口、渲染循環等)。 大家可以訪問 https://github.com/GameTechDev/IntroductionToVulkan,在提供的示例中獲取包含完整源代碼的示例項目。 此處我僅展示與 Vulkan 相關的部分代碼。 在應用中使用 Vulkan API 的方法有多種:
可以動態加載驅動程序的庫來提供 Vulkan API 實施,并自己獲取它提供的函數指示器。
可以使用 Vulkan SDK 并鏈接至提供的 Vulkan Runtime (Vulkan Loader) 靜態庫。
可以使用 Vulkan SDK,在運行時動態加載 Vulkan Loader 庫,并通過它加載函數指示器。
不建議使用第一種方法。 硬件廠商可以任意修改它們的驅動程序,從而可能影響與特定應用的兼容性。 甚至還會破壞應用,并要求開發人員編寫支持 Vulkan 的應用,以覆寫部分代碼。 這就是為什么最好使用部分抽象層的原因。
建議使用 Vulkan SDK 的 Vulkan Loader。 它能夠提供更多配置功能和更高的靈活性,無需修改 Vulkan 應用源代碼。 有關靈活性的一個示例是層。 Vulkan API 要求開發人員創建嚴格遵守 API 使用規則的應用。 如果出現錯誤,驅動程序幾乎不會提供反饋,僅報告部分嚴重且重大的錯誤(比如內存不足)。 因為使用該方法,所以 API 本身能夠盡可能的小、快。 但如果我們希望獲得更多有關哪些地方出錯的信息,那么必須啟用調試/驗證層。 不同的層級用途各不相同,比如內存使用、相應參數傳遞、對象壽命檢查等等。 這些層級都會降低應用的性能,但會為我們提供更多信息。
我們還需選擇是靜態鏈接至 Vulkan Loader ,還是動態加載并在運行時由我們自己獲取函數指示器。 選擇哪一種只是個人喜好問題。 本文將重點介紹第三種使用 Vulkan 的訪問,從 Vulkan Runtime 庫動態加載函數指示器。 該方法與我們希望在 Windows* 系統上使用 OpenGL* 時的做法類似,采用該方法時,默認實施僅提供部分基礎函數。 剩下的函數必須使用 wglGetProcAddress() 或標準窗口 GetProcAddress() 函數動態加載。 這就是創建 GLEW 或 GL3W 等 wrangler 庫的對象。
加載 Vulkan Runtime 庫并獲取導出函數指示器
在本教程中,我們將逐步介紹如何自己獲取 Vulkan 函數指示器。 我們從 Vulkan Runtime 庫 (Vulkan Loader) 加載這些指示器,該運行時庫應與支持 Vulkan 的顯卡驅動程序一同安裝。 面向 Vulkan 的動態庫 (Vulkan Loader) 在 Windows* 和 Linux* 上分別命名為 vulkan-1.dll 和 libvulkan.so。
從現在起,我引用第一個教程的源代碼,重點為 Tutorial01.cpp 文件。 因此在應用的初始化代碼中,我們需要使用如下代碼加載 Vulkan 庫…查看全文
了解更多相關內容,請關注CSDN英特爾開發專區!
總結
以上是生活随笔為你收集整理的没有任何秘密的 API:Vulkan* 简介第 1 部分:序言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: app拍照添加水印 (uniapp)
- 下一篇: 浅谈生成树