关于 Vulkan 简介 —— Android N 引入新的 3D 渲染引擎

原创 2016年08月30日 11:13:48

关于 Vulkan

Vulkan 被视作是 OpenGL 的后续产品。 它是一种多平台 API,可支持开发人员准备游戏、CAD 工具、性能基准测试等高性能图形应用。 它可在不同的操作系统(比如 Windows*、Linux* 或 Android*)上使用。 Vulkan 由科纳斯组织创建和维护。 Vulkan 与 OpenGL 之间还有其他相似之处,包括图形管道阶段、OpenGL 着色器(一定程度上),或命名。

但也存在许多差异,但这进一步验证了新 API 的必要性。 20 多年来,OpenGL 一直处于不断变化之中。 自 90 年代以来,计算机行业发生了巨大的变化,尤其是显卡架构领域。 OpenGL 库非常适用,但仅依靠添加新功能以匹配新显卡功能并不能解决一切问题。 有时需要完全重新设计。 因此创建出了 Vulkan。

Vulkan 基于 Mantle* — 第一个全新的低级别图形 API。 Mantle 由 AMD 开发而成,专为 Radeon 卡架构而设计。 尽管是第一个公开发布的 API,但使用 Mantle 的游戏和基准测试均显著提升了性能。 后来陆续发布了其他低级别 API,比如 Microsoft 的 DirectX* 12、Apple 的 Metal*,以及现在的 Vulkan。

传统图形 API 和全新低级别 API 之间有何区别? OpenGL 等高级别 API 使用起来非常简单。 开发人员只需声明操作内容和操作方式,剩下的都由驱动程序来完成。 驱动程序检查开发人员是否正确使用 API 调用、是否传递了正确的参数,以及是否充分准备了状态。 如果出现问题,将提供反馈。 为实现其易用性,许多任务必须由驱动程序在“后台”执行。

在低级别 API 中,开发人员需要负责完成大部分任务。 他们需要符合严格的编程和使用规则,还必须编写大量代码。 但这种做法是合理的。 开发人员知道他们的操作内容和希望实现的目的。 但驱动程序不知道,因此使用传统 API 时,驱动程序必须完成更多工作,以便程序正常运行。 采用 Vulkan 等 API 可避免这些额外的工作。 因此 DirectX 12、Metal 或 Vulkan 也被称为精简驱动程序/精简 API。 大部分时候它们仅将用户请求传输至硬件,仅提供硬件的精简抽象层。 为显著提升性能,驱动程序几乎不执行任何操作。

低级别 API 要求应用完成更多工作。 但这种工作是不可避免的, 必须要有人去完成。 因此由开发人员去完成更加合理,因为他们知道如何将工作分成独立的线程,图像何时成为渲染对象(颜色附件)或用作纹理/采样器等等。 开发人员知道管道处于何种状态,或哪些顶点属性变化的更频繁。 这样有助于提高显卡硬件的使用效率。 最重要的原因是它行之有效。 我们能够观察到显著的性能提升。

但“能够”一词非常重要。 它要求完成其他工作,但同时也是一种合适的方法。 在有一些场景中,我们将观察到,OpenGL 和 Vulkan 之间在性能方面没有任何差别。 如果不需要多线程化,或应用不是 CPU 密集型(渲染的场景不太复杂),使用 OpenGL 即可,而且使用 Vulkan 不会实现性能提升(但可能会降低功耗,这对移动设备至关重要)。 但如果我们想最大限度地发挥图形硬件的功能,Vulkan 将是最佳选择。

主要显卡引擎迟早会支持部分(如果不是所有)新的低级别 API。 如果希望使用 Vulkan 或其他 API,无需从头进行编写。 但通常最好对“深层”信息有所了解,因此我准备这一教程。

Vulkan API


Android N 将一项新的 3D 渲染 API Vulkan™ 集成到平台中。就像 OpenGL™ ES 一样,Vulkan 是 3D 图形和渲染的一项开放标准,由 Khronos Group 维护。

Vulkan 是完全从零开始设计,以最小化驱动器中的 CPU 开销,并能让您的应用更直接地控制 GPU 操作。 Vulkan 还允许多个线程同时执行工作,如命令缓冲区构建,以获得更好的并行化。

Vulkan 开发工具和库都已卷入 Android NDK。它们包括:

  • 验证层(调试库)
  • SPIR-V 着色程序编译器
  • SPIR-V 运行时着色器编译库

Vulkan 仅适用于已启用 Vulkan 硬件的设备上的应用,如 Nexus 5X、Nexus 6P 和 Nexus Player。 我们正在与合作伙伴密切合作,以尽快使 Vulkan 能面向更多的设备。

如需要了解更多信息,请参阅 API 文档

参考链接:

https://software.intel.com/en-us/articles/api-without-secrets-introduction-to-vulkan-preface

https://developer.android.com/about/versions/nougat/android-7.0.html

Vulkan学习--基于Andriod

Vulkan于2016年初发布至今,PC大多显卡更新后都 可以支持 移动平台现在骁龙820以及Mali的T860& T880 系列都已经支持 本文主要介绍基于Android的Vulkan环...
  • jaccen
  • jaccen
  • 2016年05月05日 22:43
  • 2682

Android N(7.0)中的Vulkan支持

原文地址:http://blog.csdn.net/jinzhuojun/article/details/52430543 背景 Vulkan为Khronos Group推出的下一...
  • coloriy
  • coloriy
  • 2016年09月18日 11:03
  • 1619

重棒:android7.0要从opengles 切到Vulkan ,气死程序员,那我们先来看看vulkan是什么吧

 原文链接,更多 狄八哥 点击链接加入群【tango.unity虚拟现实技术】:http://jq.qq.com/?_wv=1027&k=2Fnro1G ...
  • sinat_35801282
  • sinat_35801282
  • 2016年08月09日 17:07
  • 6591

Vulkan - 高性能渲染

Vulkan - 高性能渲染 Vulkan在今年二月份已经正式发布,再加上过去一年内各类科技媒体的宣传以及网上的热烈讨论,关于Vulkan大家想必早已耳熟能详。作为下一代图形API以及OpenGL的...
  • arag2009
  • arag2009
  • 2017年01月23日 10:59
  • 2119

Vulkan入门

本人的显卡是GTX 770M,安装的驱动程序支持Vulkan.是否支持vulkan可以通过https://developer.nvidia.com/vulkan-driver查询结果 ...
  • chenhaifeng2016
  • chenhaifeng2016
  • 2017年02月16日 15:53
  • 1502

Vulkan学习资料汇总(持续更新)

Vulkan 资料 Khronos 网站可以查看到相关API以及相关文档。目前大多数PC显卡经过更新最新驱动,已经可以支持Vulkan,移动平台 Mali T860和T880以及以上都可以支持了...
  • jaccen
  • jaccen
  • 2016年05月07日 22:38
  • 4034

Android N(7.0)中的Vulkan支持

Vulkan为Khronos Group推出的下一代跨平台图形开发接口,用于替代历史悠久的OpenGL。Android从7.0(Nougat)开始加入了对其的支持。Vulkan与OpenGL相比,接口...
  • ariesjzj
  • ariesjzj
  • 2016年09月04日 12:07
  • 6532

Android OpenGL显示任意3D模型文件

前面两篇文章我们介绍了OpenGL相关的基本知识,现在我们已经会绘制基本的图案了,但是还远远不能满足我们的需求。我们要做的是显示任意的模型,这也是本文所要做的事情。在阅读本文之前,请先确保你已经看过我...
  • huachao1001
  • huachao1001
  • 2016年07月29日 15:44
  • 12870

八大渲染引擎(如VRAY)的分析

一、RENDER MAN:鲜活的渲染思想        RenderMan具有功能强大的Shader编译器和抗动画模糊功能,能够让设计者创造出超复杂的动作片来。同时他还有一个功能不可忽视,就是他的真实...
  • wang15061955806
  • wang15061955806
  • 2016年07月07日 21:10
  • 8025

Vulkan编程指南翻译 第六章 着色器和管线 第5节 第6段 图像采样

这一节实在太长了,分篇来翻译。 Sampled Images   当着色器从图像读数据时,他们可以可以使用两种方式。第一种是原生加载,从图像的指定位置直接读取格式化的或非格式化的数据,第二种是使...
  • cloudqiu
  • cloudqiu
  • 2017年03月11日 18:48
  • 335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于 Vulkan 简介 —— Android N 引入新的 3D 渲染引擎
举报原因:
原因补充:

(最多只允许输入30个字)