初识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,一经查实,立即删除!

相关文章

[Redux/Mobx] 说说Redux的实现流程

[Redux/Mobx] 说说Redux的实现流程 通过分析redux的几个核心api,来看如何实现redux store.subscribe: 订阅数据的变化store.dispatch:dispatch后改变state,同时通知store.subscribe函数执行,上面这两个函数可以利用发布-订阅模式store.getS…

数据镜像备份工具rsync

rsync可以用来实现数据本地镜像和远程备份。 1,可以镜像保存整个目录和文件。 2,可以增量同步数据,文件传输率高。 3,可以保持原文件的权限,时间等属性。 4,可以加密传输数据。 5,可以使用rcp、…

Error format not a string literal and no format arguments解决方案

From: http://www.cnblogs.com/hhuang2012/p/3336911.html 场景: cocos2dx 跨平台开发, 移植Android版本时, 当进行到build_native.sh步骤后 ndk版本: android-ndk-r9 开发环境: mac os 64bit, AndroidEclipse BUG: CCCommon.cpp:54:77: error: format not a string literal an…

[Redux/Mobx] redux的数据存储和本地储存有什么区别?

[Redux/Mobx] redux的数据存储和本地储存有什么区别? Redux存储的数据本质上都是JS变量,都是在内存中的,页面刷新就会消失本质存储是像localStorage Cookie IndexDB WebSQL等缓存技术,它是存储在硬盘中的,不会随便页面…

java_IO流之 NIO

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

iOS iPhone SDK 包含哪些东西?

From: http://www.cnblogs.com/jy578154186/archive/2013/02/27/2934881.html iPhone SDK 包含哪些东西? 第一部分: 在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口、工具以及资源全都包含于iPhone SDK。 苹果公司将大部分系…

[Redux/Mobx] 你有使用过redux-saga中间件吗?它是干什么的?

[Redux/Mobx] 你有使用过redux-saga中间件吗?它是干什么的? redux-saga 就是用来处理副作用(例如:AJAX请求)的一个中间件,使用Generator 函数 个人简介 我是歌谣,欢迎和大家一起交流前后端知…

python Pillow 的简单案例

#代码来自 实验楼https://www.shiyanlou.com/courses/ #encodingutf-8#/usr/bin/env pythonfrom PIL import Imageimport argparse parser argparse.ArgumentParser() parser.add_argument(file)parser.add_argument(-o , --output)parser.add_argument(--width, t…

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

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

[Redux/Mobx] Redux怎样重置状态?

[Redux/Mobx] Redux怎样重置状态? 先在store初始化时对store的初始化数据状态进行保存,然后reducer中多定义一个重置状态的type"RESET"的action的逻辑,这个操作里面直接返回初始的状态值,在需要重置状态的时候&#xf…

Java数据结构--HashTable(拉链法)

双向节点 /*** Created by root on 16-3-6.*/ public class Node<E> {public E data;public Node prev;public Node next;public Node(E target,Node prev,Node next){//链接两个孤立节点datatarget;this.prevprev;this.nextnext;}public Node(){this(null,null,null);}p…

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

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

[Redux/Mobx] Context api可以取代Redux吗?为什么?

[Redux/Mobx] Context api可以取代Redux吗&#xff1f;为什么&#xff1f; 可以&#xff0c;但是并不完美。 利用Context APIuseReducer的方案可以实现简化版的Redux。 Redux除了能够存储数据之外&#xff0c;它的强大之处还在于数据修改的单一性&#xff0c;清晰的数据流向&a…

四则运算题1

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

Redux/Mobx面试题汇总

[Redux/Mobx] redux和flux的区别是什么&#xff1f; [Redux/Mobx] 什么是redux&#xff1f;说说你对redux的理解&#xff1f;有哪些运用场景&#xff1f;[Redux/Mobx] 在React中你是怎么对异步方案进行选型的&#xff1f; [Redux/Mobx] 推荐在reducer中触发Action吗&#xff…

RTP传输H264时的sps和pps的获取

From: http://wmnmtm.blog.163.com/blog/static/38245714201192491746701/ 使用RTSP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两项从哪里获取呢?答案是从H264码流中获取.在H264码流中,都是…

54.施工方案第二季(最小生成树)

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description c国边防军在边境某处的阵地是由n个地堡组成的。工兵连受命来到阵地要进行两期施工。 第一期的任务是挖掘暗道让所有地堡互联互通。现已勘测设计了m条互不相交的暗道挖掘方案&a…

jQuery面试题汇总

【jQuery】 [jQuery] 针对jQuery的优化方法有哪些&#xff1f; [jQuery]JQuery一个对象可以同时绑定多个事件&#xff0c;这是如何实现的&#xff1f; [jQuery] jQuery中如何将数组转化为json字符串&#xff0c;然后再转化回来&#xff1f; [jQuery] jQuery UI怎样自定义组…

H264中的SPS、PPS提取与作用

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

POJ 3991 Seinfeld

Seinfeld Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1285 Accepted: 599 Description I’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. …