Vulkan 02 - 開發(fā)環(huán)境
本章我們創(chuàng)建windows的vulkan開發(fā)環(huán)境。
我們使用C++17,visual studio 2017或者2019。
Vulkan SDK
SDK包括頭文件,標準驗證層,調(diào)試工具和一個vulkan函數(shù)的加載器(loader)。Loader在運行時查詢驅(qū)動暴露的函數(shù),類似OpenGL的GLEW。
SDK可以從LunarG的官方網(wǎng)站下載,如果僅下載SDK是不需要注冊的。
SDK的安裝期間,注意一下安裝位置。安裝完成后,首先我們要確認一下你的顯卡和驅(qū)動支持vulkan。打開SDK的安裝目錄,運行bin目錄里的vkcube.exe,如果能運行且正確顯示一個立方體就正確了。
目錄里還有一個有用的程序,glslanValidator.exe和glslc.exe是用來編譯GLSL的,編譯結(jié)果是字節(jié)碼(byte code)。在之后的著色器章節(jié)我們會詳細描述。Bin目錄里還有vulkan loader和驗證層,lib目錄里有必須的庫文件。
最后,include目錄里有vulkan頭文件。
GLFW
如前所述,vulkan是平臺無關(guān)的API,不包括創(chuàng)建窗體的函數(shù)。為了支持跨平臺,并且避開Win32的眾多內(nèi)容,我們使用GLFW庫來創(chuàng)建窗體,它支持Windows, Linux和Macos。還有其它庫也有這個功能,例如SDL,但是GLFW的好處是,除了創(chuàng)建窗體,他還抽象了其它一些平臺相關(guān)的功能。
你可以在GLFW的官方網(wǎng)站上找到最新release版本。本教程我們將使用64-bit二進制的庫。
解壓縮并且放在你覺得方便的地方。
GLM
不像DirectX 12,Vulkan沒有線性代數(shù)庫,我們需要自己編寫,或者使用第三方庫。GLM是一個很好的庫,它常常用來和OpenGL一起使用。
GLM是一個頭文件Only的庫,你只需要下載最新版本,解壓縮并且放在你覺得方便的地方,最后include就可以了。
設置Visual Studio
我們已經(jīng)安裝了所有的依賴文件,可以設置visual studio了,然后就可以開始寫點代碼了。
打開Visual Studio然后創(chuàng)建一個Windows Desktop Wizard項目,輸入項目名稱然后點確定按鈕。
在項目創(chuàng)建選項里,選擇
Application type: Console Application(.exe)
Additional Options: 選擇Empty Project
其它勾選框都不要選。
然后創(chuàng)建一個main.cpp文件,粘貼代碼如下。你現(xiàn)在還不需要理解代碼做了什么,只是測試可以編譯和運行vulkan程序。
#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,"Vulkanwindow",nullptr, nullptr);
? ??uint32_t extensionCount = 0;
? ??vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount,nullptr);
? ??std::cout << extensionCount <<"extensionssupported\n";
? ??glm::mat4 matrix;
? ??glm::vec4 vec;
? ??auto test = matrix * vec;
? ??while(!glfwWindowShouldClose(window))
? ??{
? ??? ??glfwPollEvents();
? ??}
? ??glfwDestroyWindow(window);
? ??glfwTerminate();
? ??return 0;
}
現(xiàn)在,設置項目
● 包含目錄加入GLFW和GLM的頭文件的目錄
● 附件庫目錄加入GLFW庫的目錄
● 附加庫文件加入vulkan-1.lib和glfw3.lib
● c++語言標準設置成C++17
現(xiàn)在可以編譯和運行了。
如果運行時,控制臺顯示的extension的數(shù)量不是零,那么恭喜,你已經(jīng)設置好可以玩玩vulkan了。