当前位置:网站首页>【TA-霜狼_may-《百人计划》】1.4 PC手机图形API介绍
【TA-霜狼_may-《百人计划》】1.4 PC手机图形API介绍
2022-07-01 03:24:00 【zczplus】
【TA-霜狼_may-《百人计划》】1.4 PC手机图形API介绍
1.4.1 基础概念
- 应用端:程序本身,相对于opengl es, 我们本身程序属于应用端
- 图元:要渲染的几何物体,或者形状。任何一个正方形或者直线这些元素都是一个图元。
- 纹理:通俗点理解,可以理解为一张图片,在opengl es中纹理就是图片的另一种叫法。
- 纹素:纹理的基础单元
- 顶点数组:顶点指的是组成图元的各个顶点的坐标数据(在3D笛卡尔坐标中即x,y,z坐标),这些坐标数据可以一起存到一个内存数组中,这个数组就叫做顶点数组。
- 顶点缓冲区:在显存中专门分配一块区域用以存储顶点数组,这块显存区域就称为顶点缓冲区。
1.4.2 DirectX, OpenGL, OpenGL ES
Khronos定义了OpenGL,微软定义了DirectX
- 手机端:ios和android都支持OpenGL ES;
- 电脑:Windows系统支持DirectX 和 OpenGL, Linux/Mac系统支持OpenGL。
Khronos Open Standards for Graphics and Compute
- 1990’s OpenGL
- 2000’s OpenGL|ES
- 2005 OpenGL|SC
- 2008 OpenCL
- 2014 SPIR
- 2015 Vulkan
OpenGL ES
OpenGL ES 1.x系列的固定功能管线
OpenGL ES 2.0、3.0 都是可编程图形管线。
开发者可以自己编写图形管线中的顶点着色器和片段着色器两个阶段的代码。
渲染流程示意图:
不同点
- 兼容性
3.0向下兼容2.0; - 新特性
阴影贴图、体渲染、基于GPU的粒子动画、几何形状实例化、纹理压缩和伽马校正等技术的重要功能在2.0中不具备。3.0引入上述功能并且继续适应嵌入系统的局限性。 - 渲染管线
3.0中移除了Alpha测试和逻辑操作两部分,Alpha测试可以在片段着色器中进行,逻辑操作则是因为很少被使用。 - 着色器脚本编写
(1) 版本声明
必须在着色器脚本中使用#version 300 es声明为指定使用OpenGL ES 3.0版本。而不添加版本声明或者使用#version 100 es声明版本则指定使用OpenGL ES 2.0。
(2) 输入输出
3.0新增了in,out,inout关键字,用以取代attribute和varying关键字。
同时删除gl_FragColor和gl_FragData了,片段着色器可以使用out声明字段输出。
(3) 变量赋值
3.0 可以直接使用layout对指定位置的变量赋值。
1.4.3 OpenGL ES 3.0新功能
现在还看不懂,有个印象,以后回来再看吧。
纹理
着色器
几何形状
缓冲区对象
帧缓冲区
1.4.4 骁龙Adreno对应ES版本型号
Adreno是由高通开发的SIP核GPU并用于其自家的SoC,该核心最初作为BitBoys从事GPU开发工作。
2006年,BitBoys被ATI收购开设Imageon产品线。同年AMD收购ATI。2009年1月,AMD出售Imageon给高通,随后Imageon更名为Adreno。
近年来骁龙高端处理器版本对应的Adreno
骁龙835——Adreno540
骁龙845——Adreno630
骁龙850——Adreno630
骁龙855——Adreno640
各版本Adreno对应的OpenGL ES版本
Adreno130——OpenGL ES 1.1
Adreno200-225——OpenGL ES 2.0
Adreno302-330——OpenGL ES 3.0
Adreno405、418——OpenGL ES 3.1
Adreno420、430——OpenGL ES 3.2
Adreno505、506、508——OpenGL ES 3.2
也就是说骁龙8代以上的CPU都已经智齿OpenGL ES 3.2了。
Vulkan
新一代的API,同样是由Khronos公司牵头开发,旨在成为下一代的OpenGL。Vulkan能够更好地利用CPU的多线程能力,并且通过暴露GPU底层功能的方法,提供了大量的控制手段。再加上高可预测性行为使得图形效果更优。但是针对GPU高负荷的现有程序,如果想要通过OpenGL转向Vulkan从而实现性能的提升是无法达成的。重点在于针对CPU的优化。
边栏推荐
- Nacos
- Ouc2021 autumn - Software Engineering - end of term (recall version)
- Ultimate dolls 2.0 | encapsulation of cloud native delivery
- RSN:Learning to Exploit Long-term Relational Dependencies in Knowledge Graphs
- 静态库使用MFC和共享库使用MFC的区别
- Review column - message queue
- How to display scrollbars on the right side of the background system and how to solve the problem of double scrollbars
- 389. 找不同
- pytorch nn.AdaptiveAvgPool2d(1)
- Idea plug-in backup table
猜你喜欢

Research on target recognition and tracking based on 3D laser point cloud

数据库中COMMENT关键字的使用

Download and installation configuration of cygwin

线程数据共享和安全 -ThreadLocal

Gorilla/mux framework (RK boot): RPC error code design

LeetCode 144二叉树的前序遍历、LeetCode 114二叉树展开为链表

Cookie&Session

Jeecgboot output log, how to use @slf4j

家居网购项目

Leetcode 128 longest continuous sequence (hash set)
随机推荐
详解Spark运行模式(local+standalone+yarn)
Error: plug ins declaring extensions or extension points must set the singleton directive to true
[小样本分割]论文解读Prior Guided Feature Enrichment Network for Few-Shot Segmentation
还在浪费脑细胞自学吗,这份面试笔记绝对是C站天花板
Pathmeasure implements loading animation
数据交换 JSON
线程数据共享和安全 -ThreadLocal
Finally in promise
Pytorch training deep learning network settings CUDA specified GPU visible
Listener listener
pytorch nn.AdaptiveAvgPool2d(1)
【伸手党福利】开发人员重装系统顺序
208. 实现 Trie (前缀树)
在线公网安备案保姆级教程【伸手党福利】
FCN full Convolution Network Understanding and Code Implementation (from pytorch Official Implementation)
idea插件备份表
multiple linear regression
[深度学习]激活函数(Sigmoid等)、前向传播、反向传播和梯度优化;optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理
小程序容器技术与物联网IoT的结合点
Data exchange JSON