Vulkan学习--1.简介

vulkan起源:

Vulkan 是作为一个跨平台的图形 API 设计的。以往许多图形 API 采用固定功能渲染管线设计,
应用程序按照一定格式提交顶点数据,配置光照和着色选项。
随着显卡架构逐渐成熟,提供了越来越多的可编程功能,这些功能被集成到原有的 API 中。
造成驱动程序要做的工作越来越复杂,应用程序开发者要处理的兼容性问题也越来越多。
随着移动浪潮到来,人们对移动GPU 的要求也越来越高,但以往的图形 API 不能够进行更加精准地控制来提升效率,对多线程的支持也非常不足,导致没有发挥出图形硬件真正的潜力。
由于没有历史包袱,Vulkan 完全按照现代图形架构设计,提供了更加详细的 API 给开发者,
大大减少了驱动程序的开销,允许多个线程并行创建和提交指令,使用标准化的着色器字节码,
将图形和计算功能进行统一。

简介

Vulkan是Khronos集团开发的高级图形API。其他图形API(如OpenGL和Direct3D)要求驱动程序执行从高级API到适合硬件的必要转换。当时的意图是让开发人员不必管理更复杂的图形硬件细节。

随着那些旧的图形API不断发展,它们慢慢地将越来越多的低级硬件功能直接暴露给程序员。程序员要求对硬件进行较低级别的访问,从而牺牲了具有更高开销和更低性能的手持功能的便利性和安全性。

Vulkan旨在避免在高功能API中发现更高的开销。因此,Vulkan程序员在构建Vulkan应用程序时需要处理更多细节。但这允许程序员更有效地管理应用程序资源和GPU硬件。这是因为程序员对应用程序的资源使用模式有更多的了解,因此不必做出其他API被迫做出的代价高昂的假设。

此外,Vulkan还旨在成为比其他图形API更加跨平台的API,不仅针对高端系统,还针对低端移动设备

请记住Khronos
请记住Khronos
请记住Khronos

vulkan优点:

1.可以更好地描述应用程序所需的运算
2.拥有更好的性能,更轻便的驱动程序
3.跨平台
4.Vulkan 的每个操作都要显式定义,加之校验层的使用,调试使用Vulkan 的程序比较轻松

vulkan缺点:

1.因为更精准的控制,意味着更繁琐的细节,
包括设置初始时使用的帧缓冲,以及对缓冲和纹理图像的内存管理
2.提供的错误检测和调试功能非常有限,驱动程序会在发生错误时直接崩溃
3.它没有包含任何用于创建窗口的功能

注意:

Vulkan 并非适合所有人。它是为追求计算机图形性能极限的狂热分子设计的。
如果你对游戏开发更感兴趣,或许 OpenGL 和 Direct3D 更适合你,它们在短期内仍然会是主流,
并且目前还有大量的设备尚未支持Vulkan。除此之外,也可以使用 Unreal Engine 或 Unity 这类引擎,
它们可以通过封装好的底层完全透明地使用 Vulkan。
Vulkan 的一个核心思想就是通过显式地定义每一个操作来避免出现不一致的现象。

关于vulkan的校验层特性:

校验层 (Validation layers) 特性来可以进行一定的错误检查措施。
校验层是一段被插入在 Vulkan API 和驱动程序之间的代码,可以对 Vulkan API 函数的参数进行检查,
跟踪内存分配。
我们可以在开发期开启校验层,然后在发布程序时关闭校验层,减少性能损失。
校验层可以完全自己编写,本教程使用Vulkan SDK 提供的一组校验层。
我们通过注册的回调函数来接受来自校验层的调试信息。

vulkan示例url:

vulkan示例url:

1.https://vulkan.lunarg.com/doc/sdk/1.1.101.0/windows/tutorial/html/04-init_command_buffer.html
2.https://vulkan-tutorial.com/Introduction

猜你喜欢

转载自blog.csdn.net/yuxing55555/article/details/88864507