android Vulkan 图形新特性研究

来源:互联网 发布:网络摄像头怎么接线 编辑:程序博客网 时间:2024/04/30 10:50

1. 简介

Vulkan 最早是由科纳斯组织(Khronos Group)在 2015 年的游戏开发者大会 (GDC)上提出来的,这是底层跨平台的 3D 图像及运算应用程序接口(API),其被 视作是 OpenGL 的后续产品。它可在不同的操作系统(比如 Windows、Linux 或 Android)上使用。Vulkan 与 OpenGL 之间有相似之处,包括图形管道阶段、OpenGL 着色器(一定程度上),或命名。

Vulkan 支持的操作系统包括:Linux, Windows XP to Windows 10, android 等。Vulkan 还可以支持主流的 GPU,包括:AMD, NVIDIA, Adreno, PowerVR, Mali 等桌面 GPU 和移动 GPU。这点与微软的 DirectX 和苹果的 Metal 标准是不同的, 微软的 DirectX 只需要运行在 windows 平台,而苹果的 Metal 也只需要运行在自 己的平台上面

2. OpenGL Vulkan 比较


a. OpenGL/OpenGLES 特性: 
► OpenGL 驱动是一个庞大的接口层,应用不是直接的访问 GPU 的资源,
而必须要按照 OpenGL 接口的方法去访问这带来了如下问题:复杂的 驱动导致过度的 CPU 开销,以及设备运行的不可预测性。这意味着 应用不能预测某个接口调用开销,也就无法优化代码的运行。 
► 驱动总是开启错误检测,增加了额外的 CPU 开销。事实上如果应用自己做了错误检查,那么驱动就没必要再做一遍。 
► 驱动需要编译链接整个 shader 代码,这在应用启动时会占用更多的初始化时间。 
► 桌面系统和移动系统使用不一样的 API 接口,OpenGL ES 被广泛应用于移动设备中,但是在桌面系统上面还是使用 OpenGL,这使得应用 没法方便的跨平台开发。 
b. Vulkan 特性: 
► 更加简单的驱动结构,使得开销更小和更好的设备一致性。 
► 提供分层架构,使得驱动执行时的正确性验证和调试信息可以按需加载。在良好验证的应用情况下,可以节省掉错误检测和调试代码 执行的开销。 
► Vulkan 运行时不需要处理整个 shader 代码,而是处理 SPIR-V 中间代码。这可以节省 shader 编译链接的时间。 
► 为移动平台,桌面系统以及嵌入式设备提供统一的 API。 
► Vulkan 不负责内存的管理,多线程的管理和并发访问保护,把这些工作转移给应用程序去负责,而 Vulkan 只需要专注于提供 GPU 的功 能给应用。 

0 0
原创粉丝点击