本教程教导大家使用Vulkan图形和计算API的基础知识。Vulkan是一个新的API,它由Khronos group(OpenGL的管理组织)开发,对现代显卡提供了比以往的API(OpenGL和Direct3D)好得多的功能提取,它能让你更好地描述你的编程意图,以便产生更好的运行效率,并减少对显卡驱动的压力。Vulkan的设计理念跟微软的Direct3D 12和Apple的Metal比较相似,它的优势在于完全跨平台,能让你的程序同时运行于Windows, Linux和Android平台,而你要为此付出的代价是,你将与一个更为底层更为繁琐的API打交道,为之全新打造每一个所需的细节,包括最初的frame buffer创建,以及对buffers和texture images的objects进行内存管理。显卡驱动的工作将比以往少得多,这意味着你要在自己的程序中提供正确的处理方式。
因此,Vulkan不是面向所有的3D开发者的,它的目标用户是那些对高性能的计算机图形开发有热情并愿意为之付出一定工作量的程序员。如果你只是对3D游戏开发有兴趣,而不是想致力于计算机3D图形基础库的推进,那么OpenGL和Direct3D可能会更适合你,或者你可以基于一种引擎来开发,比如Unreal Engine和Unity,它们会提供更高层的API,而这些高层API在底层实现上可能是采用Vulkan的。
在接下来的Vulkan学习之旅中,有一些前提条件您需要预先具备:
1.一块支持Vulkan的显卡及其驱动(NVIDIA, AMD, Intel)
2.会C++(对RAII, initializer lists比较熟悉)
3.编译器对C++17有良好的支持(Visual Studio 2017+, GCC 7+, Or Clang 5+)
4.不要求您知道OpenGL和Direct3D,但要有计算机3D图形学的基础知识,比如我们不会解释正交投影背后的数学原理。在此为您推荐一个非常棒的学习计算机图形学基本概念的在线教程:《Learning Modern 3D Graphics Programming》(https://paroj.github.io/gltut )
此外还有一些非常优秀的相关资料,它们是:
《Ray tracing in one weekend》
《Physically Based Rendering book》
《Vulkan being used in a real engine in the open-source Quake and DOOM 3》
关于程序语言,您也可以用C代替C++,如果这样的话,您将使用另一个线性代数库,您也需要自己重新组织代码结构,因为我们将使用C++的class和RAII等特性来组织代码逻辑和资源生命周期管理。此外,本教程还有另外一个版本是为使用Rust的程序员写的。为了让使用其它编程语言的开发者易于理解,也是为了让大家对基本的API有更多的体验,我们使用原始的C API来调用Vulkan.如果你是用C++的,你可能会更喜欢使用较新的Vulkan-Hpp 绑定,因为它们解决了一些繁琐的工作,能帮助减少一些类型的出错。
(本文是对https://vulkan-tutorial.com的中文翻译)
免责声明:本站所有内容及图片均采集来源于网络,并无商业使用,如若侵权请联系删除。