1. 程式人生 > >001. Windows環境Vulkan學習筆記 起始篇

001. Windows環境Vulkan學習筆記 起始篇

ios toolbar 學習 efi sdk 下載 版本 引用 extension

背景:由於公司需要用c++對現有項目進行重構,本人從事近6年的C#開發現需要快速轉C++,但是看書學習內容太多記不住,所以打算從Vulkan入手寫一些東西。

為什麽選擇Vulkan而不是OpenGL或者別的? 1、因為個人感覺Vulkan會在未來幾年取代OpenGL,會對自己以後的發展有好處 2、因為本身就是學習c++沒必要糾結這個東西是否是當下熱門的。

準備做寫什麽:1、實現一些簡單的模型載入紋理貼圖,光照反射等 2、簡單引擎,骨骼動畫等。

進度正題:

一、搭環境

需要的素材,VulkanSDK,GLFW,GLM

1.下載安裝VulkanSDK,下載windows版本

2.下載GLFW下載win32位 將態庫glfw3.lib、glfw3dll.lib、動態庫glfw3.dll 分別放到VulkanSDK安裝目錄下的Third-Party的對應目錄裏。

技術分享圖片技術分享圖片

3. VulkanSDK中目前已經包含GLM在Third-Part | Include 目錄中。如需最新版本可以下載GML

SDK目錄下的這幾個模版文件拷貝到VS2017模版目錄,如下圖,不然創建時不會出現模版

技術分享圖片

技術分享圖片

從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程序運行起來了。

技術分享圖片

001. Windows環境Vulkan學習筆記 起始篇