图形 1.4 PC手机图形API介绍
前言
电脑的工作原理:电脑是由各种不同的硬件组成,由驱动软件驱使硬件进行工作。所有的软件工程师都会直接或者间接的使用到驱动
定义:图形API是一个图形库,用于渲染 2D,3D 矢量图形的跨语言,跨平台的应用程序编程接口(API)。针对 GPU
基础概念
应用端:
即我们自己的程序端,相对用 OpenGL ES,我们属于应用端
什么是应用端?应用端就是我们程序自己,相对于 OpenGL,、OpenGL ES、DirectX来说,我们都是应用端
图元:
要渲染的几何物体,或者形状。比如要渲染一个正方形的图片,就是一个图元,要渲染两条直线,这两条直线也是图元
纹理:
通俗点,可以理解为一张图片,在 OpenGL ES 中纹理就是图片的另外一种叫法
纹素:
纹素是纹理的基础单位,但并不是像素,图像时由像素排列而成,纹理时由纹素排列表示的,两个具有本质上的区别
顶点数组:
顶点指的是组成图元的各个顶点的坐标数据(在3D笛卡尔坐标中即 x,y,z 坐标),这些坐标数据可以一起存到一个内存数组中,这个数据叫做顶点数组
顶点缓冲区:
在显存中专门分配一块显存来存储这个顶点数组,这个显存就称为顶点缓冲区
顶点着色器
片元着色器
DirectX、OpenGL、OpenGL ES 发展史
Khronos 定义了 OpenGL ,微软自己定义了 DirectX
手机: IOS 和 Android都是支持 OpenGL ES
电脑: Windows 系统支持 DirectX 和 OpenGL,Linux/Mac(Unix)系统支持 OpenGL
20 世纪 90 年代
OpenGL 开放
2000 年
OpenGL ES 开放
直到现在的年代,OpenGL ES 已经到了 3.2 版本
2005 年
OpenGL SC 开放
2008 年
开放基层更高效计算的 OpenCL
2014 年
开放 SPIR
2015 年
Vulkan 开放,更加高效的 GPU 使用效率
OpenGL ES
相同点:相比于 OpenGL ES 1.x 系列的古董功能管线,OpenGL ES 2.0 和 OpenGL ES 3.0 都是可编程图形管线。开发者可以自己编写图形管线中的 顶点着色器 和 片元着色器 两个阶段的代码
OpenGL ES 渲染流程
2.0 版本
模型准备—顶点着色器编辑—图元重组—光栅化—片元着色器编写—通过三种测试,最后输出到 Frame Buffer 中
3.1版本
先拿到这些 Buffer 缓存—顶点池—顶点着色器—顶点着色器进行分布 Transform 的 Feedback,进行一个返回,让我们去了解一些数据给下一阶段使用,之后要去进行光栅化—片元着色器的计算—逐片元渲染,然后输入到 Frame Buffer 中
不同点
1.兼容性
OpenGL ES 3.0 是向后兼容 OpenGL ES 2.0的。也就是说使用 2.0 编写的应用程序可以在 3.0 中继续使用的
2.新特性
采用阴影贴图,体渲染(volume rendering),基于 GPU 的例子动画,几何形状实例化
纹理压缩和伽马校正等技术的重要功能在 2.0 都不具备。3.0 将这些功能引入,同时继续适应嵌入系统的局限性。
3.渲染管线
3.0 中移除了 Alpha 测试 和 逻辑操作(LogincOp)两部分,这两部分存在于 OpenGL ES 2.0 和 OpenGL ES 1.x 中,移除 Alpha 测试是因为片元着色器可能抛弃片段,因此 Alpha 测试可以在片段着色器中进行,移除逻辑操作(LogicOp)是因为它很少被使用
4.着色器脚本编写
着色器脚本的辨析发生了比较大的变化,其中几点为:
1)版本声明
必须在着色器脚本中使用 #version 300 es 声明为指定使用 OpenGL ES 3.0 版本
#version 300 es
而不添加脚本声明或者使用 #version 100 es 声名版本则指定使用 OpenGL ES 2.0
2)输入输出
3.0 中新增了 in ,out,inout 关键字,用来取代 attribute 和 varying 关键字。同时 gl_FragColor 和 gl_FragData也删除了,片段着色器可以使用 out 声明字段输出
3)变量赋值
3.0 中可以直接使用 layout 对指定位置的变量赋值。例如:
#shader 脚本 layout(location = 1 ) uniform float a;
代码中,直接写上对应的 layout 的值就可以赋值
GLES30.glUniformlf(1,1f);
而 2.0 中必须使用如下形式赋值
GLES20.glUniformlf(GLES20.glGetAttribLocation(program,"a"),1f)
骁龙Adreno 对应的 OpenGL ES 版本
1.历史
Adreno由高通开发的SIP核GPU并用于自家的SOC,核心最初作为BitBoys从事GPU开发。 06年,BitBoys被ATI收购开设Imageon产品线。06年AMD收购ATI,09年1月,AMD出售Imageon予高通。随后,Imageon更名为Adreno。
作业
支持OpenGL ES 3.2的骁龙的GPU型号
Adreno 320后支持3.0
Adreno 420后支持3.1
Adreno 420后支持3.2
Adreno 320后稳定支持OpenGL ES 3.0
如何看待Vulkan
Vulkan API适用于从高性能电脑到移动低功耗设备的显卡(OpenGL具有名为OpenGL ES的移动设备API子集,它仍是支持Vulkan设备的备选API)。
优势
相比于Direct3D 12,Vulkan与前身OpenGL类似,受多种操作系统支持。Vulkan已经能在Windows 7、Windows 8、Windows 10、Tizen、Linux与Android上运行(iOS和macOS有第三方支持)。
通过批量处理(Batching)减少CPU负载,使CPU可以执行更多其他的计算或渲染任务。
在多核心CPU上,Vulkan能对核心与线程进行优化。Direct3D 11与OpenGL 4最初为单核心CPU设计,尽管后来出现了针对多核心CPU优化的扩展,不过与Vulkan相比,优化仍不是很好。
减少了驱动程序的开销与维护工作。OpenGL使用高级着色语言GLSL编写着色器,不同的驱动在程序运行时需要执行自身的GLSL编译器,将程序的着色器转换为GPU可执行的机器代码。而Vulkan驱动将着色器语言预先转化为SPIR-V(Standard Portable Intermediate Representation)的中间二进制格式,其行为类似于Direct3D的HLSL着色器。通过着色器预编译,应用程序加载速度更快,并且3D场景可以使用更多种着色器。Vulkan驱动只需对GPU进行优化并生成代码,这使得驱动程序更容易维护,驱动程序包更小(GPU供应商仍需在驱动程序中提供OpenGL与OpenCL的支持)。
计算与图形处理的统一管理,因此Vulkan无需与单独的计算API配合使用。
由于OpenGL的复杂度和维护难度比Vulkan低很多,在多数情况下也能提供理想的整体性能,现阶段OpenGL仍是个很好的选择。 ——英伟达
在OpenGL中,在屏幕上显示某些内容要容易得多。即使没有经典的固定函数,仅仅渲染全屏效果或图像处理也只需要几行代码。Vulkan在到达屏幕上第一个像素时的冗长程度要高得多。正如上一篇博文中所暗示的资源绑定或内存管理需要编写更多复杂的代码。特别是对于不熟悉图形的人来说,最好使用OpenGL或渲染中间件来隐藏这种复杂性并专注于实际任务。
Transitioning from OpenGL to Vulkan
图形 1.4 PC手机图形API介绍相关推荐
- 百人计划 图形1.4 PC手机图形API介绍
前言 电脑工作原理:电脑是有各种不同的硬件组成,由驱动软件驱使硬件进行工作.所有的如软件工程师都会直接或间接使用到驱动. 定义:是一个针对GPU的图形库,用于渲染2D.3D矢量图形的跨语言.跨平台的应 ...
- 【TA-霜狼_may-《百人计划》】1.4 PC手机图形API介绍
[TA-霜狼_may-<百人计划>]1.4 PC手机图形API介绍 1.4.1 基础概念 1.4.2 DirectX, OpenGL, OpenGL ES Khronos Open Sta ...
- PC手机图形API介绍
基础概念: 电脑的工作原理: 电脑是由各种不同的硬件组成,由驱动软件驱使硬件进行工作.所有的软件工程师都会直接或节间使用到驱动. 定义:是一个图形库,用于渲染2D,3D,矢量图形的跨语言,跨平台应用程 ...
- 有生之年转ta系列4pc手机图形api介绍
本文内容来自 [技术美术百人计划]图形 1.4 PC手机图形API介绍 观后记录 美术岗位代码或者算法一类的问题可能不太懂 本文仅用来记录学习,如果有不对的请指出谢谢 图形部分 第一章 4纹理基础 前 ...
- Tensor Flow Lite C++ API 介绍
目录 Class类介绍 tflite::ErrorReporter 头文件路径 类作用 Public API介绍 示例 tflite::FlatBufferModel 头文件路径 类作用 Public ...
- 非智能手机java_JAVA非智能手机:三普手机功能优缺点介绍
在现今这个社会,科技日新月异,人们出行还是家中还是在办公,手上都会配备至少一步手机,作为沟通联系工具.其中手机分为苹果手机以及安卓手机.两种花手机的分类在于其系统的不一样.安卓手机在安装软件和使用软件 ...
- 苹果cms v8模板 高仿爱奇艺带PC+手机模板
介绍: 苹果cms v8模板 高仿爱奇艺带PC+手机模板 网盘下载地址: http://kekewl.net/frgNDYcaQne0 图片:
- 仿权重8高收录面包网pc+手机苹果cmsv8影视网站含迅雷下载N430模板
苹果cmsv8仿权重8高收录面包电影网模板主题介绍: 模板名称:仿权重8高收录面包网pc+手机苹果cmsv8影视网站含迅雷下载N430模板 模板程序:苹果cmsv8 模板类型:pc+手机 模板颜色:白 ...
- 1080驱动此图形驱动程序_如何更新图形驱动程序以获得最佳游戏性能
1080驱动此图形驱动程序 A graphics driver is the software that allow your operating system and programs to use ...
最新文章
- 所有mysql变量都以 开头对不对_PHP复习题(选择题)
- Spring Aop 日志管理及配置文件的详细配置
- 【JVM调优工具篇】jvisualvm工具导出dump文件教程
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- java访问其它服务器,一个Java Web应用程序是否可以在tomcat服务器的同一本地主机中调用另一个Java Web应用程序...
- C++ 二进制文件读操作
- uni-app 写了一个网易云微信小程序
- easymock参数_EasyMock参数匹配器
- Google文件系统(GFS)翻译学习
- Integer的自动装箱底层缓存原理
- c语言程序最简单例子,简单C语言程序的例子
- 小米升鸿蒙系统,小米11升级鸿蒙系统
- 漫威 DC 英雄综合实力排位,这人秒杀灭霸
- 计算机专业学生的学期规划,大学生大一下学期规划
- 第四天:Spark Streaming
- DynamicModuleException: MENIFEST.MF文件未找到
- python复数的概念及运算_python 复数运算
- 勤学修身 放飞梦想4
- macOS下OneNote中文字体和数字英文字体不统一,英文自动变粗体
- 抖音上的战斗力测试软件,抖音战斗力测试app
热门文章
- 2008年12月大小非解禁股一览表
- Ubuntu如何安装pacman
- Cannot run program “mvn“ (in directory “/var/lib/jenkins/workspace)
- 电子元器件基础知识大全详解
- Cobalt Strike的安装
- 钉钉api接口 Java_服务端对接钉钉三步走
- C++(Qt) 和 Word、Excel、PDF 交互总结
- CC2640R2F学习笔记(8)——Watchdog看门狗使用
- 被封杀4年的看片神器终于解禁了,要跟百度网盘抢生意?(末尾送书)
- 李开复写给中国大学生的七封信【1/7】