3d - Vulkan 或 Metal 或这些图形 "APIs"到底是什么?

标签 3d metal vulkan directx-12

我想了解 Vulkan API 到底是什么。它本质上是在与显卡对话的操作系统上运行的服务吗?或者它到底是什么以及它是如何工作的?例如,我不明白为什么有专门为 Vulkan 编写的显卡驱动程序,Vulkan 只是一个规范还是它是某些东西的实现,或者它到底是如何工作的?

我读过一些文章,包括维基百科页面,但我不明白图形是如何工作的。

Vulkan 只是驱动程序实现者遵循的一个标准,还是一个执行某些操作的实际操作系统服务?

最佳答案

因此,您拥有图形硬件(图形卡),并且有许多不同的卡具有不同的内部结构。如果您想编写 3D 图形应用程序(例如视频游戏),那么您必须确切地知道如何与当前使用的每个显卡进行通信。显然,这是一项繁重的工作,甚至是不可能的,因为许多视频设备的内部工作原理是专有的,不向公众开放。

这就是图形 API 的用武之地。图形 API 为程序​​员提供了一个与所有支持该 API 的图形硬件进行通信的接口(interface)。例如,您可以使用 DirectX 11 为所有支持它的显卡编写程序。 DirectX 是用于在 MS Windows 和 XBOX 下运行的程序的 API。 Vulkan 也是另一个 API,旨在用于所有支持它的平台,例如 Windows 和 Linux(这些几乎是唯一支持 Vulkan 的操作系统)。

API 的作用是将您的命令转换为图形驱动程序可以理解的内容,并可以针对系统上安装的特定图形卡进行进一步处理。

简而言之,这基本上就是它。您可能想通过搜索图形 API-驱动程序-硬件层来了解更多信息。

关于3d - Vulkan 或 Metal 或这些图形 "APIs"到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57220495/

相关文章:

ios - 使用 Metal 的旧设备上的内存使用量不断上升

objective-c - Metal - 如何从预定的处理程序回调中呈现可绘制对象

ios - 尝试与 Opengl 纹理共享 Metal 纹理

Vulkan:Renderpass LoadOp 和 StoreOp 同步

c++ - opengl 3d 空间平面上的程序网格

sorting - 如何分类对象以进行Guendelman激波传播?

c++ - 如何将 Vulkan 与 MinGW 一起使用? (R_X86_64_32 错误)

Vulkan 描述符绑定(bind)

Java 3D数组赋值

Silverlight 5 - 3D - 渲染模式原因 - 暂时不可用