Vulkan 02 - 开发环境
本章我们创建windows的vulkan开发环境。
我们使用C++17,visual studio 2017或者2019。
Vulkan SDK
SDK包括头文件,标准验证层,调试工具和一个vulkan函数的加载器(loader)。Loader在运行时查询驱动暴露的函数,类似OpenGL的GLEW。
SDK可以从LunarG的官方网站下载,如果仅下载SDK是不需要注册的。
SDK的安装期间,注意一下安装位置。安装完成后,首先我们要确认一下你的显卡和驱动支持vulkan。打开SDK的安装目录,运行bin目录里的vkcube.exe,如果能运行且正确显示一个立方体就正确了。
目录里还有一个有用的程序,glslanValidator.exe和glslc.exe是用来编译GLSL的,编译结果是字节码(byte code)。在之后的着色器章节我们会详细描述。Bin目录里还有vulkan loader和验证层,lib目录里有必须的库文件。
最后,include目录里有vulkan头文件。
GLFW
如前所述,vulkan是平台无关的API,不包括创建窗体的函数。为了支持跨平台,并且避开Win32的众多内容,我们使用GLFW库来创建窗体,它支持Windows, Linux和Macos。还有其它库也有这个功能,例如SDL,但是GLFW的好处是,除了创建窗体,他还抽象了其它一些平台相关的功能。
你可以在GLFW的官方网站上找到最新release版本。本教程我们将使用64-bit二进制的库。
解压缩并且放在你觉得方便的地方。
GLM
不像DirectX 12,Vulkan没有线性代数库,我们需要自己编写,或者使用第三方库。GLM是一个很好的库,它常常用来和OpenGL一起使用。
GLM是一个头文件Only的库,你只需要下载最新版本,解压缩并且放在你觉得方便的地方,最后include就可以了。
设置Visual Studio
我们已经安装了所有的依赖文件,可以设置visual studio了,然后就可以开始写点代码了。
打开Visual Studio然后创建一个Windows Desktop Wizard项目,输入项目名称然后点确定按钮。
在项目创建选项里,选择
Application type: Console Application(.exe)
Additional Options: 选择Empty Project
其它勾选框都不要选。
然后创建一个main.cpp文件,粘贴代码如下。你现在还不需要理解代码做了什么,只是测试可以编译和运行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;
}
现在,设置项目
● 包含目录加入GLFW和GLM的头文件的目录
● 附件库目录加入GLFW库的目录
● 附加库文件加入vulkan-1.lib和glfw3.lib
● c++语言标准设置成C++17
现在可以编译和运行了。
如果运行时,控制台显示的extension的数量不是零,那么恭喜,你已经设置好可以玩玩vulkan了。