当前位置:   article > 正文

[Vulkan教程]开发环境_libvulkan-dev

libvulkan-dev

这里使用译者的开发环境:
Ubuntu(操作系统)
CMake(构建系统)
CLion(IDE)
g++/clang(编译器)


本文不按原文翻译
PS: Linux大法好,Mac贵,Windows浪费生命

设置开发环境,有一些基本的知识你得会。比如:

  1. 编译过程
  2. 怎么用Linux,怎么用Ubuntu
  3. 怎么用CMake
  4. 怎么用CLion(如果你用的话)
  5. 等等吧

安装g++

Ubuntu包:g++/clang

你也可以安装clang,然后通过update-alternatives命令切换默认c++编译器,或通过CMake修改c++编译器。

安装CMake

Ubuntu包:cmake

安装Vulkan

Ubuntu包:vulkan-tools libvulkan-dev vulkan-validationlayers-dev spriv-tools

在Linux上开发Vulkan应用时,你需要一些重要的内容:Vulkan加载器、验证层和一组测试你机器是否支持Vulkan的命令行实用程序:

  • vulkan-tools:命令实用程序包,最重要的是vulkaninfovkcube工具。运行它们以确定你的机器是否支持Vulkan。
  • libvulkan-dev:Vulkan加载器,用于运行时查找驱动中的函数,就像OpenGL中的GLEW(如果你了解的话)。
  • vulkan-validationlayers-dev spriv-tools:安装标准验证层和需要的SPIR-V工具。它们对于调试Vulkan程序非常重要。我们会在之后的章节中讨论。

Vulkan就安装好了。你可以通过vkcube指令测试一下,如果成功你会看到如下窗口:
vkcube
如果你收到了错误消息,你要确保你安装了最新的驱动程序,确保其包含Vulkan运行时,确保你的显卡支持Vulkan。你可以回顾介绍章节,找到供应商的驱动程序链接,以获取支持。

安装GLFW

Ubuntu包:libglfw3-dev

如前所述,Vulkan是一个平台无关的API,而且它不包含任何创建显示渲染结果的窗口的接口。为了受益于跨平台并不使用X11,我们使用GLFW库创建窗口,它支持Windows、Linux和MacOS。也有一些别的库可以使用,像SDL,但GLFW 的优势在除了创建窗口之外,还抽象了一些其它特定于平台的内容。

安装GLM

Ubuntu包:libglm-dev

与DirectX12不同,Vulkan不包含用于线性代数运算的库。GLM是一个很好的库,设计用于图形API,常常用于OpenGL。它是一个只有头文件的库。

安装着色器编译器

Ubuntu包:没有glslc
我们要自己装,从这里下载非官方包,然后安装到/usr/local/文件夹(把install目录里面的内容都拷贝过去就行,拷贝时记得加上sudo权限)。

现在,我们只需要一个将文本着色器代码编译为字节码的程序。

有两个比较流行的编译器:Khronos Group的glslangValidator和Google的glslcglslc用起来像gccclang,我们用它。你可以执行glslc试一下,应该会输出以下内容:

glslc: error: no input files
  • 1

我们会在着色器模块一章深入了解glslc

创建CMake项目

我们从这里获取源码。

然后,我们在源码目录新建一个CMakeFiles.txt:

# 设置cmake版本
cmake_minimum_required(VERSION 3.12)

# 新建项目
project(VulkanTutorial)

# 设置使用c++17
set(CMAKE_CXX_STANDARD 17)

################################################################################
# find glslc
# package: https://github.com/google/shaderc/blob/main/downloads.md
find_program(
    GLSLC_COMMAND
    name glslc
    PATHS
    /bin
    /usr/bin
    /usr/local/bin
)
if (GLSLC_COMMAND)
    message(STATUS "Found glslc ${GLSLC_COMMAND}")
else ()
    message(FATAL_ERROR "NOT fount glslc")
endif ()

################################################################################
# glm
# target: glm::glm
# ubuntu package: libglm-dev
find_package(glm REQUIRED)
if (glm_FOUND)
    message(STATUS "Found glm(${GLM_VERSION})")
else ()
    message(FATAL_ERROR "NOT found glm")
endif ()

################################################################################
# glfw3
# target: glfw
# ubuntu package: libglfw3-dev
find_package(glfw3 REQUIRED)
if (glfw3_FOUND)
    message(STATUS "Found glfw3(${glfw3_VERSION})")
else ()
    message(FATAL_ERROR "NOT found glfw3")
endif ()

################################################################################
# Vulkan
# target: Vulkan
# ubuntu package: vulkan-tools libvulkan-dev vulkan-validationlayers-dev spriv-tools
find_package(Vulkan REQUIRED)
if (Vulkan_FOUND)
    message(STATUS "Found Vulkan")
else ()
    message(FATAL_ERROR "NOT found Vulkan")
endif ()

# 添加子目录
add_subdirectory(code)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

然后,我们在code目录新建一个CMakeFiles.txt:

# 获取所有源码文件
file(GLOB SRCS *.cpp)
foreach (SRC ${SRCS})
    # 获取文件名
    get_filename_component(NAME ${SRC} NAME_WE)
    # 每个源码文件都生成一个可执行程序
    add_executable(${NAME} ${SRC})

    # 链接库
    target_link_libraries(
        ${NAME}
        Vulkan::Vulkan
        glm::glm
        glfw
    )
endforeach ()

# 生成spv(TODO)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

可通过命令行启动第一个窗口:

# 首先进入到源码目录,之后执行以下目录

# 新建文件夹,用于生成
mkdir build
# 进入build目录
cd build
# 由CMake生成Makefile项目
cmake ..
# 生成 00_base_code
make 00_base_code
# 执行程序
./code/00_base_code
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

执行以上命令之后,可以看到一个黑色的窗口。
黑色的窗口
OK,正式开搞

目录
上一节 概述
下一节 绘制一个三角形/设置/基本代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/297924
推荐阅读
  

闽ICP备14008679号