关于本教程(Vulkan Tutorial)

(本文是对 https://vulkan-tutorial.com/ 的中文翻译)

本教程教导大家使用Vulkan图形和计算API的基础知识。Vulkan是一个新的API,它由Khronos group(OpenGL的管理组织)开发,对现代显卡提供了比以往的API(OpenGL和Direct3D)好很多的功能抽象,它能让你更好地描述你的编程意图,以便产生更好的运行效率,并减少对显卡驱动的压力。Vulkan的设计理念跟微软的Direct3D 12和Apple的Metal比较相似,它的优势在于完全跨平台,能让你的程序同时运行于Windows, Linux和Android平台,而你要为此付出的代价是,你将与一个更为底层更为繁琐的API打交道,为之全新打造每一个所需的细节,包括最初的frame buffer创建,以及对buffers和texture images进行内存管理。显卡驱动的工作将比以往少得多,这意味着你要在自己的程序中做更多的工作来确保正确的行为方式。

因此,Vulkan不是面向所有的人,它的目标用户是那些对高性能的计算机图形开发有热情并愿意为之付出一定工作量的程序员。如果你只是对3D游戏开发有兴趣,而不是想致力于计算机3D图形基础库的推进,那么OpenGL和Direct3D可能会更适合你,另一种选择是基于一种引擎来开发,比如Unreal Engine和Unity,它们会基于Vulkan提供更高层的抽象API。

在接下来的Vulkan学习之旅中,有一些前提条件您需要预先具备:

1. 一块支持Vulkan的显卡及驱动(NVIDIA, AMD, Intel, Apple Silicon (Apple M1))

2. 会C++(对RAII, initializer lists比较熟悉)

3. 编译器对C++17有良好的支持(Visual Studio 2017+, GCC 7+, Or Clang 5+)

4. 计算机3D图形学的基础经验

本教程不要求您了解OpenGL和Direct3D的概念,但要求您有基本的3D图形学知识,比如我们不会解释正交投影背后的数学原理。在此为您推荐一个非常棒的学习计算机图形学基本概念的在线教程:

《Learning Modern 3D Graphics Programming》  https://paroj.github.io/gltut 

此外还有一些非常优秀的相关资料,它们是:

1. Ray tracing in one weekend

https://github.com/RayTracing/raytracing.github.io

2.Physically Based Rendering: From Theory to Implementation

https://www.pbr-book.org/

使用Vulkan的3d引擎项目

1. Vulkan Quake port based on QuakeSpasm (github.com)

https://github.com/Novum/vkQuake

2. Vulkan DOOM 3 port based on DOOM 3 BFG Edition (github.com)

https://github.com/DustinHLand/vkDOOM3

关于程序语言,您也可以用C代替C++,如果这样的话,您将使用另一个线性代数库,您也需要自己重新组织代码结构,我们将使用C++的class和RAII等特性来组织代码逻辑和资源生命周期管理。本教程还有另外一个版本是为使用Rust的程序员写的。

为了让使用其它编程语言的开发者易于学习本教程,也为了让大家对基本的API有更多的体验,我们使用原始的C API来调用Vulkan. 如果你用C++开发,可能会更喜欢使用较新的Vulkan-Hpp 绑定,因为它们解决了一些繁琐的工作,能帮助减少一些类型的出错。

本教程的pdf版本:

https://raw.githubusercontent.com/Overv/VulkanTutorial/master/ebook/Vulkan%20Tutorial%20en.pdf

你可能感兴趣的:(Vulkan,c++,c语言)