初识Vulkan


 

Vulkan是Khronos组织制定的“下一代”开放的图形显示API,是与DirectX12可以匹敌的GPU API标准。Vulkan是基于AMD的Mantle API演化而来,目前Vulkan 1.0标准已经完成并正式发布。

上一代的OpenGL|ES并不会被遗弃,还会继续发展,很有可能OpenGL|ES变为Vulkan的简化API。

 Vulkan 技术交流 QQ群 175250233

Vulkan的优势

与OpenGL|ES相比Vulkan的优势:

l  更简单的显示驱动层

Vulkan提供了能直接控制和访问底层GPU的显示驱动抽象层, 显示驱动只是对硬件薄薄的封装,这样能够显著提升操作GPU硬件的效率和性能。之前OpenGL的驱动层对开发者隐藏的很多细节,现在都暴露出来。Vulkan甚至不包含运行期的错误检查层。驱动层干的事情少了,隐藏的bug也就少了。

l  支持多线程

Vulkan不再使用OpenGL的状态机设计,内部也不保存全局状态变量。显示资源完全由应用层负责管理,包括内存管理、线程管理、多线程绘制命令产生、渲染队列提交等。应用程序可以充分利用CPU的多核多线程的计算资源,减少CPU等待,降低延迟。 带来的问题是,线程间的同步问题也由应用程序负责,从而对开发人员的要求也更高。

l  预编译Shaders

驱动层不提供前端shader编译器,只支持标准可移植中间表示二进制代码(SPIR-V)。即提高了执行Shaders的效率又增加了将来着色语言的灵活性。

所以目前的GLSL/HLSL可以直接通过工具转换为SPIR-V,在Vulkan中使用。这样就可以使用离线的shader编译。

 另外,SPIR-V还支持OpenCL!


l  跨平台

支持桌面、移动设备、游戏主机、嵌入式……只要需要显示的地方,貌似都能支持。

这也是Vulkan与DirectX12相比的优势。

 

Vulkan与多线程

OpenGL|ES不支持多线程一直被广为诟病。Vulkan开始设计之处就考虑多线程问题,可以说就是为了多线程而设计的。

命令缓冲和和命令调度队列是Vulkan支撑多线程的重要组成部分,类似OpenGL的上下文状态。

Vulkan的命令缓冲都是独立的互不干扰的单元,支持在多个线程中创建。这样就可以由多个线程创建不同的绘制命令,由单独的线程管理渲染命令队列,统一提交给GPU绘制,如下图所示:

 

 

Vulkan窗口系统集成

Vulkan把显示设备的创建和窗口系统的创建明确分开。显示设备只提供支持可视化的显示队列的接口,应用程序控制如何显示绘制结果。比如前后显示缓冲这些的都由应用程序创建和设置。

Vulkan提供标准的扩展API支持多窗口系统,如Android、Windows、X等窗口系统。

 

Vulkan SDK

Khronos并没有提供开发Vulkan程序的SDK。要开发Vulkan应用,就需要使用由Valve资助的一个叫LunarG的公司开发的LunarG SDK。另外还需要下载最新的支持Vulkan的显卡驱动程序。

Vulkan周边的辅助开发工具基本都是开源的,但不幸的是LunarG的网站目前还在墙外,下载个SDK都很费劲。可以在 Vulkan 技术交流 QQ群 175250233中下载。

 

 

Vulkan API

To be continued…

转载于:https://www.cnblogs.com/wuwuwu/p/6335136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java_IO流之 NIO

NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度。 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个…

“我的电脑”右键“管理”打不开,提示“该文件没有与之关联的程序来执行该操作“

From: http://bbs.kafan.cn/thread-1240058-1-1.html 如图: 右键单击桌面上的“我的电脑”,再点“管理”就弹出这个对话框了。 【该文件没有与之关联的程序来执行该操作。请安装一个程序,或者,如果已安装程序,请在“…

[交流] 新手常见(五国)(-v图)错误解决(原版,破解kernel,补丁kext下载)

From: http://blog.csdn.net/ashuai81/article/details/8032952 原文出处:http://bbs.pcbeta.com/viewthread-863656-1-1.html 谢谢大神, 看了这个才弄出了黑苹果。 在可安装的主版硬件上,安装Mac不该是个大问题,声卡、显卡、…

四则运算题1

/*信息:20133075 张勋 《随机生成30道四则运算题目》要求:除整数外,还要支持真分数的四则运算设计思路: 1.通过radom函数生成自然数,给变量赋值 2.另一个变量是真分数,分子比分母小 3.随机生成四则运…

H264中的SPS、PPS提取与作用

From: http://blog.csdn.net/sunnylgz/article/details/7680262 牛逼的视频会议网站:http://wmnmtm.blog.163.com/blog/#m0 http://wmnmtm.blog.163.com/blog/static/38245714201192491746701/ 使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Pa…

H264参数语法文档: SPS、PPS、IDR

From: http://blog.csdn.net/heanyu/article/details/6205390 H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set) 对应H264标准文档 7.3.2.1 序列参数集的语法进行解析 SPS参数解析// fill sps with content of p[cpp] view plaincopyint …

React封装一个组件弹出框

目录 前言 代码 简要 引用 效果 前言 我是歌谣 放弃很容易 但是坚持一定很酷 为了保证react代码的一个简洁性 最近开始封装组件, 直接上代码 因为都很简单的模式 这边直接进行讲解 代码 //取消机构和取消讲师的方法封装 //params visible控制弹框的一个现实和隐藏 import…

Pytorch项目(模型训练与优化),肺癌检测项目之六

数据优化方案 数据优化方案1:重复抽样 (1)对多数类的样本实施欠采样,减少多数类数量 (2)对少数类的样本实施过采样,增加少数类数量 数据优化方案2:数据增强 数据增强&#xff08…

【数据库】SQL查询强化篇

查询是数据库的基本应用之一,oracle中的SQL查询语法,一方面遵循了SQL标准,另一方面又有自己的独特之处。 从而使得oracle中的SQL查询功能更加强大。接下来将会涉及oracle中的SQL查询语句,包括: 基本查询:主…

[python3] pyton socket 同步通信举例

本文比较简单,适合入门用,作个笔记,方便日后抄写 一个服务端,一个客户端,而且是阻塞方式,一次只能接受一个客户端连接并通信噢。 客户端发送‘bye, 结束与服务端的通信,如果发送’shutdown&…

第三周仿真作业

1.设计要求 结合本周学习的直流电机机械特性,用Modelica设计和仿真一个直流电机串电阻启动过程,具体要求如下: 1)电机工作在额定电压和额定磁通下,采用串三段或四段电阻启动,整个启动过程电枢电流中不能超过…

分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容

问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log、console.info、console.group、console.warn、console.error代码来查看JS的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错。 本文…

OS X 平台的 8 个终端实用工具

From: http://blog.jobbole.com/72238/ 本文由 伯乐在线 - shinancao 翻译自 mitchchn。欢迎加入iOS小组。转载请参见文章末尾处的要求。 OS X 终端对外开放了许多很强大的UNIX实用工具和脚本。如果你是从Linux转过来的,你会发现许多熟悉的命令正是按照你想的那样…

内存操作流

可以将输出的位置设置在内存上,此时就要使用ByteArrayInputStream、ByteArrayOutputStream来完成输入和输出功能。 ByteArrayInputStream主要完成将内容写入到内存中 ByteArrayOutputStream的功能主要是将内存中的数据输出 import java.io.ByteArrayInputStream; im…

mysql 中 group_concat()用法

基本语法:group_concat([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator 分隔符]) 初始数据: 以name分组,将money打印在一行,默认,分隔: select aa.namename , GROUP_CONCAT( money ) money from a…

H264(NAL简介与I帧判断)

From: http://blog.csdn.net/jefry_xdz/article/details/8461343 1、NAL全称Network Abstract Layer, 即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面&#…