Introduction

目录

About

E-book

Tutorial structure


About

本教程将教您使用Vulkan图形和计算API的基础知识。Vulkan是Khronos集团(以OpenGL闻名)开发的一个新API,它提供了对现代图形更好的抽象。与现有的API(如OpenGL和Direct3D)相比,此新接口允许您更好地描述应用程序的意图,这可以带来更好的性能和更少的出乎意料驱动程序行为。Vulkan背后的想法与Direct3D 12和Metal的想法相似,但Vulkan具有完全跨平台的优势,允许您同时为Windows、Linux和Android开发。

然而,您为这些好处付出的代价是,您必须更详细的使用API。与图形API相关的每个细节都需要由应用程序从头开始设置,包括初始帧缓冲区创建和缓冲区和纹理图像等对象的内存管理。图形驱动程序将做更少的操作,这意味着您必须在应用程序中做更多的工作以确保正确的行为。

Vulkan并不适合所有人。它的目标是那些热衷于高性能计算机图形并愿意投入一些工作的程序员。如果您对游戏开发更感兴趣,而不是对计算机图形更感兴趣的话,那么您可能希望坚持使用OpenGL或Direct3D,这在不久的将来都不会被弃用而使用Vulkan。另一种选择是使用Unreal engine或Unity这样的引擎,它可以使用Vulkan,同时向您提供更高级别的API。

有了这一点,让我们介绍一下遵循本教程的一些前提条件:

  • 与Vulkan(NVIDIA、AMD、Intel、Apple Silicon(或Apple M1))兼容的图形卡和驱动程序
  • 有C++经验(熟悉RAII、初始化列表)
  • 一个支持C++17功能的编译器(Visual Studio 2017+、GCC 7+或Clang 5+)
  • 一些现有的3D计算机图形经验

本教程不会假定您了解OpenGL或Direct3D概念,但它确实要求您了解3D计算机图形的基础知识。例如,它不会解释透视投影背后的数学原理。有关计算机图形概念的详细介绍,请参阅其他在线书籍。其他一些优秀的计算机图形资源包括:

  • Vulkan being used in a real engine in the open-source Quake and DOOM 3

如果需要,您可以使用C而不是C++,但您必须使用不同的线性代数库和代码结构。我们将使用类和RAII等C++特性来组织逻辑和资源生命周期。本教程还有一个可供Rust开发人员使用的替代版本。为了让使用其他编程语言的开发人员更容易理解,并获得一些基本API的经验,我们将使用原始的C API。但是,如果您使用的是C++,您可能更喜欢使用较新的Vulkan Hpp,其抽象了一些脏活累活,并有助于防止某些类型的错误。

E-book

如果您希望将本教程作为电子书阅读,那么您可以在此处下载EPUB或PDF版本:

Tutorial structure

我们将首先概述Vulkan的工作原理,以及在屏幕上显示第一个三角形所需的工作。在你了解了它们在整个过程中的基本作用之后,所有小步骤的目的将更有意义。接下来,我们将使用Vulkan SDK、用于线性代数运算的GLM库和用于窗口创建的GLFW来设置开发环境。本教程将介绍如何在带有Visual Studio的Windows和带有GCC的Ubuntu Linux上设置这些功能。

之后,我们将实现Vulkan程序中渲染第一个三角形所需的所有基本组件。每一章大致遵循以下结构:

  • 引入新概念及其目的
  • 使用所有相关的API调用将其集成到程序中
  • 将其部分抽象为函数

尽管每一章都是前一章的后续,但也可以将这些章节作为介绍某个Vulkan特性的独立文章来阅读。这意味着该网站也可作为参考。所有Vulkan函数和类型都链接到规范,因此您可以单击它们了解更多信息。Vulkan是一个非常新的API,因此规范本身可能存在一些缺点。我们鼓励您向Khronos仓库提交反馈。 

如前所述,Vulkan API有一个相当详细的API,其中包含许多参数,可以让您最大限度地控制图形硬件。这会导致创建纹理等基本操作需要执行许多步骤,每次都必须重复这些步骤。因此,我们将在整个教程中创建自己的函数集合。

每一章还将以到目前为止的完整代码列表的链接结束。如果您对代码的结构有任何疑问,或者您正在处理一个bug并希望进行比较,可以参考它。所有的代码文件都已经在多个供应商的显卡上进行了测试,以验证正确性。每一章的结尾都有一个评论部分,您可以在这里提出与特定主题相关的任何问题。请指定您的平台、驱动程序版本、源代码、预期行为和实际行为,以帮助我们帮助您。

本教程旨在成为一项社区努力。Vulkan仍然是一个非常新的API,最佳实践尚未真正确立。如果您对教程和网站本身有任何类型的反馈,请不要犹豫,向GitHub仓库提交问题或合并请求。您可以查看代码库以获得教程更新的通知。

在您完成了在屏幕上绘制第一个Vulkan供电三角形的仪式之后,我们将开始扩展该程序,包括线性变换、纹理和3D模型。

如果你以前玩过图形API,那么你会知道在第一个几何图形出现在屏幕上之前可能需要很多步骤。Vulkan中有许多初始步骤,但您会发现每个步骤都很容易理解,不会觉得多余。同样重要的是要记住,一旦你有了那个看起来很无聊的三角形,绘制完全纹理化的3D模型就不需要那么多额外的工作,而且超过这一点的每一步都会更有收获。

如果您在遵循本教程时遇到任何问题,请首先查看常见问题解答,看看是否已经列出了您的问题及其解决方案。如果在那之后你仍然感到困惑,那么可以在最相关章节的评论部分寻求帮助。

准备好迎接高性能图形API吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值