1. 程式人生 > >Vulkan Tutorial 01 開發環境搭建之Windows

Vulkan Tutorial 01 開發環境搭建之Windows

異常 方案 party return info auto 行程 while nload

操作系統:Windows8.1

顯卡:Nivida GTX965M

開發工具:Visual Studio 2017


相信很多人在開始學習Vulkan開發的起始階段都會在開發環境的配置上下一些功夫,那麽本問將會引導大家快速的完成Vulkan在Windows下的開發環境,並使用幾個常用的開發工具庫。

Vulkan SDK


開發Vulkan應用程序所需的最重要的組件就是SDK。它包括核心頭文件、標準的Validation layers及調試工具集、和驅動Loader,如果現在這些關鍵詞不是很明白的話,不要緊,我會在後續的教程上向大家說明。

首先下載SDK,登錄LunarG網站 the LunarG website ,選擇Windows平臺下的最新SDK下載安裝,特別留意的是這個SDK包括了很多的內容,諸如Samples、Documents,這些資料非常有助於學習。

技術分享

繼續安裝並註意SDK安裝的位置,安裝完成後我們首先驗證您的PC 顯卡驅動程序是否支持Vulkan,進入安裝SDK的目錄,打開Bin32目錄運行cube.exe演示程序,您將會看到以下內容。

技術分享

如果您收到了異常信息,請確保您的顯卡驅動程序是最新的,且硬件驅動支持Vulkan運行時,具體細節可以到各顯卡廠商官網確認。

此目錄中還有另外兩個程序對開發有價值,vkjson_info.exe程序生成一個JSON文件,並在使用Vulkan根據具體的硬件參數有選擇性的開啟功能。

技術分享

當然這裏也有一個地址,可以查看顯卡對VulkanSDK api版本的不同支持情況。http://vulkan.gpuinfo.org/

glslangValidator.exe程序將用於將著色器從可讀的GLSL編譯為字節碼。我們將在著色器模塊一章中深入介紹這一點。 Bin32目錄還包含Vulkan加載程序和驗證層的二進制文件,而Lib32目錄包含庫。 Doc目錄包含有關Vulkan SDK的有用信息以及整個Vulkan規範的脫機版本。最後,包含Vulkan頭文件的Include目錄。

GLFW


Vulkan不包含用於創建窗口來渲染內容的工具,出於跨平臺的考慮,Sample中使用了SDL來作為窗口系統的實現方案,本教程將使用GLFW庫創建一個支持Windows的窗口,他的優勢在於將Vulkan中的其他一些平臺訂制的內容抽象出來。

可以在GLFW官方下載最新的版本 ,在本教程中我們將使用32位庫

技術分享

下載後將頭文件目錄GLFW,靜態庫glfw3.lib、glfw3dll.lib、動態庫glfw3.dll 分別放到VulkanSDK安裝目錄下的Third-Party的對應目錄裏。

技術分享技術分享

GLM


Vulkan不包括用於數學計算的實用工具庫,因此我們引入GLM庫 ,該庫專為圖形API為設計,並且大量應用與OpenGL程序。

註,VulkanSDK中目前已經包含GLM在Third-Part | Include 目錄中。

技術分享

GLM僅包含一個頭文件,所以只需要下載最新版本,同上文GLFW一樣放置到VulkanSDK | Third-Part |Include 目錄下即可。

Setting up Visual Studio


從Vulkan模版中新建測試程序,註意在新項目創建完成後,Vulkan VS模版會自動創建一個基於SDL窗口的程序,在此可刪除掉 或替換為下文的測試代碼。

如圖所示。

技術分享

新建測試C++文件,並添加如下測試代碼。

技術分享

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>

#include <iostream>

int main() {
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported" << std::endl;

    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;

    while (!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}

會遇到編譯錯誤GLFW,現在添加具體的庫引用如圖。

技術分享

再次運行程序,恭喜你可以看到第一個Vulkan程序運行起來了。

技術分享

Vulkan Tutorial 01 開發環境搭建之Windows