Vulkan学习笔记(3):搭建开发环境

在本章中,我们将为您配置开发Vulkan应用程序的环境,并安装一些实用的库。我们将使用的所有工具(除编译器外)均兼容Windows、Linux和MacOS系统。强烈推荐使用CMake作为跨平台的开源构建系统生成工具,使用vcpkg作为跨平台的开源C/C++ 包管理器。

步骤1——安装Vulkan SDK

开发Vulkan应用程序所需的核心组件是SDK(软件开发工具包)。其中包含头文件、标准验证层、调试工具以及Vulkan函数的加载器。该加载器会在运行时从显卡驱动中查找对应函数——其原理类似于OpenGL开发中的GLEW库,如果您熟悉该机制的话。

您可从LunarG官网下载SDK,页面底部设有下载按钮。虽然无需注册账户即可下载,但创建账户后将可获取更多可能对您有帮助的补充文档资源。

在这里插入图片描述
请继续完成安装流程,并注意记录SDK的安装路径。首先我们将验证您的显卡与驱动程序是否正常支持Vulkan。进入SDK安装目录,打开Bin文件夹并运行vkcube.exe演示程序。此时您应当看到如下画面:

在这里插入图片描述

若出现错误提示,请确保您的驱动程序已更新至最新版本、包含Vulkan运行时环境,且您的显卡在支持范围内。具体可参阅引言章节获取主流硬件厂商的驱动程序链接。

该目录中还有另一个对开发很有帮助的程序:glslangValidator.exeglslc.exe。这两个工具用于将人类可读的GLSL 着色器代码编译为字节码。我们将在着色器模块章节详细探讨这一过程。Bin目录同时包含Vulkan加载器和验证层的二进制文件,而Lib目录则存放相关库文件。
最后是包含Vulkan头文件的Include目录。您可以随意浏览其他文件,但本教程中不会涉及它们的使用。

步骤2——安装Git和CMake

在Windows系统上,访问CMake官网下载3.19以上版本的安装包进行安装,安装完成后在终端窗口中输入cmake命令,能够正常运行证明CMake安装成功。访问Git官网下载最新版本的安装包进行安装,安装完成后在终端窗口中输入git命令,能够正常运行证明Git安装成功。

在Linux和MacOS系统上使用系统工具进行安装,这里就不再赘述。

步骤3——建立开发环境目录

需要为开发环境建立一个根目录,如:e:\vulkan-tutorial,您可以根据自己的习惯选择目录的位置和名字。

步骤4——安装vcpkg

进入开发环境根目录,克隆vcpkg项目,并执行:初始化命令bootstrap-vcpkg脚本:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat

步骤5——安装GLFW和GLM

在vcpkg目录中执行:

vcpkg install glfw3
vcpkg install glm

vcpkg会自动下载其源代码进行构建和安装。对于Windows系统,vcpkg会将构建好的库安装到${VCPKG_ROOT}\installed\x64-windows${VCPKG_ROOT}为vcpkg的安装目录,在我的环境中vcpkg的安装目录为e:\vulkan-tutorial\vcpkg。

步骤6——建立项目

我们现在可以建立第一个项目hello-glfw。

首先在开发环境根目录中建立一个hello-glfw目录以及hello-glfw\src,在hello-glfw目录新建以下文件:CMakeLists.txt、src\hello-glfw.cpp。

CMakeLists.txt的内容为:

cmake_minimum_required(VERSION 3.10)
project(hello-glfw)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(VULKAN_SDK "E:/VulkanSDK/1.4.335.0")
set(VCPKG_ROOT  "F:/E/Exercise/opengl/vcpkg")
set(glfw3_DIR "${VCPKG_ROOT}/installed/x64-windows/share/glfw3")

find_package(Vulkan REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
add_executable(${PROJECT_NAME} src/hello-glfw.cpp)
target_link_libraries(${PROJECT_NAME} Vulkan::Vulkan glfw)

if(CMAKE_GENERATOR MATCHES "Visual Studio")
    message(STATUS "Configuring the Visual Studio debugger environment variables for ${PROJECT_NAME}...")
    set_target_properties(${PROJECT_NAME} PROPERTIES
        VS_DEBUGGER_ENVIRONMENT
            "PATH=$<$<CONFIG:Debug>:${VCPKG_ROOT}/installed/x64-windows/debug/bin;>$<$<CONFIG:Release>:${VCPKG_ROOT}/installed/x64-windows/bin;>$ENV{PATH}"
    )        
        message(STATUS "Visual Studio debugger environment variables have been set for ${NAME}")
    else()
        message(STATUS "Non-Visual Studio generator detected, skipping Visual Studio–specific configuration.")
endif()

您需要根据Vulkan SDK和vcpkg的实际安装路径修改CMakelists.txt中相应的内容。

hello-glfw.cpp的内容为:

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

const uint32_t WIDTH = 800;
const uint32_t HEIGHT = 600;

class HelloGLFWApplication {
public:
    void run() {
        initWindow();
        mainLoop();
        cleanup();
    }

private:
    GLFWwindow* window;

    void initWindow() {
        glfwInit();

        glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
        glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);

        window = glfwCreateWindow(WIDTH, HEIGHT, "Vulkan", nullptr, nullptr);
    }

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

    void cleanup() {
        glfwDestroyWindow(window);

        glfwTerminate();
    }
};

int main() {
    HelloGLFWApplication app;
    app.run();
    return EXIT_SUCCESS;
}

步骤7——生成构建系统

在项目文件目录中执行:

cmake -S . -B build -G"Visual Studio 16 2019"

如果是Visual Studio 2022,则使用-G"Visual Studio 17 2022"。

这里我们生成的是Visual Studio的构建系统,如果需要生成其他的构建系统,指定相应的构建系统名称即可,是不是非常方便。
命令成功执行后会在项目目录中生成build目录,里面是Visual Studio的项目文件。

步骤8——构建并运行

用Visual Studio打开后,首先构建ALL_BUILD项目,然后就可以运行hello-glfw项目。

如果一切顺利,项目运行后显示一个黑色背景的GLFW窗口,因为这里仅仅是生成了一个空的窗口并没有执行任何Vulkan渲染命令,按ESC键或点击关闭按键即可即出。

后续将以这个项目为起点,逐步进入Vulkan程序的开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值