六一的部落格


关关难过关关过,前路漫漫亦灿灿。



Khronos Vulkan Tutorial - Introduction

在程序中从零开始设置图形API所需的所有细节, 包括创建初始帧缓存 initial frame buffer creation , 缓冲区和纹理图片的内存管理

如果专注于游戏开发, 而不是图形学, OpenGLDirect3D 是优于 Vulkan 的选择, 其他可选项包括 Unreal EngineUnity


学习本教程需要满足以下要求

  1. 支持 Vulkan 的设备和驱动
  2. 会C++
    • 熟知 RAII 机制

      Resource Acquisition Is Initialization
    • 熟知 initializer lists
  3. 支持 C++ 17 的编译器
  4. 有图形学开发的相关经验

    OpenGLDirect 3D

本课程不会用到 OpenGLDirect3D 的概念, 但需要读者了解基础的3D计算机图形学. 比如, 我们不会解释投影视图的数学原理.

参考资料
Learning Modern 3D Graphics Programming 学习现代3D图形学编程
Ray tracing in one weekend 一周学会光线跟踪
Physically Based Rendering book 基于物理的渲染

使用Vulkan的开源引擎

-
Quake
vkDOOM3

为了让使用其他编程语言的开发者更易上手, 以及有一定基础API的经验, 本教程会使用最初的 C 接口

使用 C++ 的开发者可以使用 Vulkan-Hpp , 其提供了 C++ bindings

1#include <vulkan/vulkan.hpp>

/Users/<用户名>/VulkanSDK/1.3.275.0/macOS/include/vulkan/vulkan.hpp


使用C而不是C++

  1. 自行寻找可使用的线性代数库
  2. 自行规划代码架构

本教程会用到以下 C++ 特性:



  • 组织逻辑
  • RAII 机制

    管理资源的生命周期

使用Rust

教程提供Rust版

Vulkano based

Vulkanalia based


环境

  • Vulkan SDK
  • GLM库

    线性代数库
  • GLFW

    创建窗口

章节结构

  1. 引入概念, 讲解意图

  2. 在程序中调用相关API

  3. 从概念抽象出组成部分, 创建帮助 helper 函数进行整合

    比如读取纹理. Vulkan 允许我们最大化控制图形硬件, 相对应地, 比如读取纹理时, 每一步骤都需由我们给出, 且在每次读取纹理时重复

    我们可能需要创建帮助函数集合, 在需要时使用


Introduction


Khronos Vulkan Tutorial - Introduction

在程序中从零开始设置图形API所需的所有细节, 包括创建初始帧缓存 initial frame buffer creation , 缓冲区和纹理图片的内存管理

如果专注于游戏开发, 而不是图形学, OpenGLDirect3D 是优于 Vulkan 的选择, 其他可选项包括 Unreal EngineUnity


学习本教程需要满足以下要求

  1. 支持 Vulkan 的设备和驱动
  2. 会C++
    • 熟知 RAII 机制

      Resource Acquisition Is Initialization
    • 熟知 initializer lists
  3. 支持 C++ 17 的编译器
  4. 有图形学开发的相关经验

    OpenGLDirect 3D

本课程不会用到 OpenGLDirect3D 的概念, 但需要读者了解基础的3D计算机图形学. 比如, 我们不会解释投影视图的数学原理.

参考资料
Learning Modern 3D Graphics Programming 学习现代3D图形学编程
Ray tracing in one weekend 一周学会光线跟踪
Physically Based Rendering book 基于物理的渲染

使用Vulkan的开源引擎

-
Quake
vkDOOM3

为了让使用其他编程语言的开发者更易上手, 以及有一定基础API的经验, 本教程会使用最初的 C 接口

使用 C++ 的开发者可以使用 Vulkan-Hpp , 其提供了 C++ bindings

1#include <vulkan/vulkan.hpp>

/Users/<用户名>/VulkanSDK/1.3.275.0/macOS/include/vulkan/vulkan.hpp


使用C而不是C++

  1. 自行寻找可使用的线性代数库
  2. 自行规划代码架构

本教程会用到以下 C++ 特性:



  • 组织逻辑
  • RAII 机制

    管理资源的生命周期

使用Rust

教程提供Rust版

Vulkano based

Vulkanalia based


环境

  • Vulkan SDK
  • GLM库

    线性代数库
  • GLFW

    创建窗口

章节结构

  1. 引入概念, 讲解意图

  2. 在程序中调用相关API

  3. 从概念抽象出组成部分, 创建帮助 helper 函数进行整合

    比如读取纹理. Vulkan 允许我们最大化控制图形硬件, 相对应地, 比如读取纹理时, 每一步骤都需由我们给出, 且在每次读取纹理时重复

    我们可能需要创建帮助函数集合, 在需要时使用