这里使用win10作为开发平台,IDE使用VS2019。首先是Vulkan的SDK配置,它包含头文件、标准层验证、调试工具和Vulkan函数的加载器,这些类似于我们在OpenGL中使用过的Glad和GLEW等。
Vulkan的SDK下载链接:https://vulkan.lunarg.com/
下载好后我们可以运行Bin目录中的vkcube.exe
demo程序试一下:

同一目录下的
glslangValidator.exe
和glslc.exe
程序可以用来编译着色器程序,将GLSL代码编译为字节码。Bin目录还包含Vulkan加载器和验证层的文件,Lib目录中包含一些库,Include目录包含Vulkan头文件。
之前提到过,Vulkan本身是一个相对来说跨平台的API,并没有自身包含创建窗口来显示渲染结果的工具,这里使用GLFW库来创建窗口,这个就不介绍了。
同理,对于数学操作,我们也可以使用之前介绍过的GLM库。
接下来我们在VS中创建一个空项目,然后在项目配置中配置好相应的头文件目录以及库文件目录,同时链接库文件(新的库文件是vulkan-1.lib
)。
接着我们创建一个.cpp文件,写下下面的代码:
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
#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;
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}

可以发现创建一个窗口,同时控制台打印了支持的扩展数量。
对于代码,如果写过GLFW配合OpenGL的话,就会发现很容易理解。配置GLFW窗口,然后声明一个窗口指针。vkEnumerateInstanceExtensionProperties
可以将Vulkan实例的扩展属性,即可接受扩展数存储在第二个变量中,接着就是窗口渲染循环,事件响应,在循环后摧毁窗口,终止GLFW。
网友评论