首页 > 其他分享 >1.6 PC、手机图形API介绍

1.6 PC、手机图形API介绍

时间:2023-07-29 20:07:06浏览次数:48  
标签:1.6 OpenGL 渲染 纹理 PC API 3.0 着色器 ES

电脑的工作原理:电脑是由各种不同的硬件组成,由驱动软件驱使硬件进行工作。所有的软件工程师都会直接或者间接的使用到驱动。

定义:是一个图形库,用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。针对GPU。

基础概念

 

1.6 PC、手机图形API介绍_浮点

应用端:即我们自己的程序段,相对于opengl es,我们属于应用端。
图元:要渲染的几何物体,或者形状。比如要渲染一个正方形的图片,就是一个图元,要渲染两条直线,这两条直线也是图元。
纹理:通俗点,可以理解为一张图片,在opengles中纹理就是图片的另外一种叫法。
纹素:(英语:Texel,即textureelement或texture pixel的合成字)是纹理元素的简称,它是计算机图形纹理空间中的基本单元。如同图像是由像素排列而成,纹理是由纹素排列表示的。
○//区分:Pixel:像素 Texel:纹素
○像素和纹素不是一个空间的概念,像素是屏幕上,纹素是纹理贴图(texture)中。
○A pixel on a texture = a texel(纹理元素、纹素) //出自《Games101》-L9
顶点数组:顶点指的是组成图元的各个顶点的坐标数据(在3D笛卡尔坐标中即x,y,z坐标),这些坐标数据可以一起存到一个内存数组中,这个数组就叫做顶点数组。
顶点缓冲区:在显存中专门分配一块显存来存储这个顶点数组,这个显存就称为顶点缓冲区。
主流API
Khronos 定义了OpenGL 微软自己定义了DirectX
目前手机,不管是 iOS 还是 Android,都是支持 OpenGL ES。
电脑:Windows 系统支持 DirectX 和 OpenGL,Linux/Mac(Unix)系统支持 OpenGL。

1.6 PC、手机图形API介绍_智能手机_02

1.6 PC、手机图形API介绍_着色器_03

OpenGL ES
版本相同与不同点
相同点:相比于 OpenGL ES 1.x 系列的固定功能管线,OpenGL ES 2.0 和 OpenGL ES 3.0 都是可编程图形管线。开发者可以自己编写图形管线中的 顶点着色器 和 片段着色器 两个阶段的代码。
不同点:
○兼容性,OpenGL ES 3.0是向后兼容OpenGL ES 2.0的。也就是说2.0写的东西可以在3.0上面继续使用
○新特性,采用阴影贴图、体渲染(volume rendering)、基于GPU的例子动画、几何形状实例化、纹理压缩和伽马校正等技术在2.0中都不具备。3.0将这些功能引入,同时继续适应嵌入系统的局限性。
○渲染管线,3.0中移除了Alpha测试与逻辑操作(LogicOp)两部分,这两部分存在于OpenGL ES2.0和OpenGL ES 1.x中。移除Alpha测试是因为片元着色器可能抛弃片元,因此Alpha测试可以在片元着色器中进行。移除逻辑操作(LogicOp)是因为它很少被使用。
○着色器脚本编写
■版本声明,必须在着色器脚本中使用 #version 300 es 声明为指定使用 OpenGL ES 3.0 版本。而不添加版本声明或者使用 #version 100 es 声明版本则指定使用 OpenGL ES 2.0。备注: 以往 2.0 刚刚出来可编程的图形管线,所以版本声明为 #version 100 es ,后来为了使版本号相匹配,OpenGL ES 3.0 的 shader 版本直接从1.0 跳到了 3.0 。
■输入输出,3.0 中新增了 in,out,inout 关键字,用来取代 attribute 和 varying 关键字。同时 gl_FragColor 和 gl_FragData 也删除了,片段着色器可以使用 out 声明字段输出。
■变量赋值

1.6 PC、手机图形API介绍_智能手机_04

1.6 PC、手机图形API介绍_智能手机_05

1.6 PC、手机图形API介绍_浮点_06

OpenGL 3.0新功能
一.纹理
1sRGB纹理和帧缓冲区——允许应用程序执行伽马校正渲染。纹理可以保存在经过伽马校正的sRGB空间,在着色器中读取时反校正到线性空间,然后输出到帧缓冲区时转换会sRGB伽马校正空间。通过在线新型空间中正确的进行照明和其他计算,可能得到更高的视觉真度。
22D纹理数组——保存一组2D纹理的纹理目标。这些数组可以用于执行纹理动画。在2D纹理数组出现之前,这种动画一般通过在单个2D纹理中平铺动画帧并修改纹理坐标改变动画帧来实现。有了2D纹理数组,动画的每个帧可以在数组的2D切片中指定。
33D纹理。一些OpenGL ES 2.0实现通过扩展支持3D纹理,而OpenGL ES3.0将此作为强制的功能。
4深度纹理和阴影比较——启动存储再纹理中的深度缓冲区。深度纹理的最常见用途是渲染阴影,这时深度缓冲区从光源的角度渲染,然后用于在渲染场景时比较,以确定片段是否在阴影中。除了深度纹理外,OpenGL ES 3.0可以在读取时比较深度纹理,从而在深度纹理上完成双线性过滤。
5无缝立方图。以往立方图渲染可能在立方图各面之间的边界产生伪像。在OpenGL ES 3.0中,立方图可以进行采样如过滤来使用相邻面的数据并删除接缝处的伪像。
6浮点纹理。OpenGL ES 3.0扩展了支持的纹理格式。支持并可与过滤半浮点纹理(16位),也支持全浮点纹理(32位),但不能过滤全浮点纹理。
7ETC2/EAC纹理压缩。OpenGL ES 3.0中强制支持ETC2/EAC。ETC2/EAC的格式为RGB888,RGBA8888和单通道及双通道有符号/无符号纹理数据。纹理压缩的好处包括更好的性能以及减少GPU内存占用。
8整数纹理。OpenGL ES 3.0中引入了渲染和读取保存未规范化有符号或者无符号8位、16位、32位整数纹理的能力。
9其他纹理格式。OpenGL ES 3.0害包含了对110-11-10RGB浮点纹理、共享指数RGB9-9-9-5纹理、10-10-10-2整数纹理以及8位分量有符号规范化纹理的支持。
10非2幂次纹理(NPOT)。纹理现在可以指定为不为2的幂次尺寸。
11纹理细节级别(LOD)。现在可以强制使用用于确定读取那个Mipmap的LOD参数。此外,可以强制基本和最大Mipmap级别。这两个功能合起来,可以流化Mimap。在更大的Mimap级别可用时,可以提高基本级别,LOD值可以平滑的增加,一提供平滑的流化纹理。注意功能非常有用,例如用于通过网络下载纹理Mipmap。
12纹理调配。引入新的纹理对象状态,允许独立控制纹理数据每个通道(R、G、B、A)在着色器中的映射
13不可变纹理。为应用程序提供在加载数据之前指定纹理格式和大小的机制。这样做的时候,纹理格式不可变,OpenGL ES驱动程序可以预先执行所有一致性和内存检查。通过允许驱动程序在绘制的时候跳过一致性检查,可以改善性能。
14最小尺寸增大。OpenGL ES 3.0支持远大于OpenGL ES 2.0的纹理资源。
二、着色器

1.6 PC、手机图形API介绍_数组_07

三、几何形状

1.6 PC、手机图形API介绍_智能手机_08

四、缓冲区对象

1.6 PC、手机图形API介绍_智能手机_09

五、帧缓冲区

1.6 PC、手机图形API介绍_数组_10

骁龙Adreno对应ES版本型号

1.6 PC、手机图形API介绍_智能手机_11

标签:1.6,OpenGL,渲染,纹理,PC,API,3.0,着色器,ES
From: https://blog.51cto.com/u_136836/6894996

相关文章

  • P9387 [THUPC 2023 决赛] 巧克力 题解
    这篇题解会只讲怎么dp,所以我们这里跳过博弈论的部分。Let'srephrasetheproblemstatementasfollows:给定\(n,m\),设\(x=1\oplus2\oplus\cdots\oplusn\oplusm\)。求有多少个有序三元组\((a,b,c)\)满足:\(a+b+c\len\)或\(a+b+c=m\)(如果都满足需要算两遍)。\((a+b......
  • solidworks api ch05
    打开一个现存的文件,并选择一个表面,执行下列代码:lettestSelectFace(swApp:ISldWorks)=letswModel=swApp.ActiveDoc|>unbox<ModelDoc2>letswSelMgr=swModel.SelectionManager:?>SelectionMgr//Dosomevalidationbeforerunning......
  • Java之Stream流的常用API
    Java之Stream流的常用APIStream流常见中间方法名称说明Stream<T>filter(Predicate<?superT>predicate)用于对流中的数据进行过滤Stream<T>limit(longmaxSize)获取前几个元素Stream<T>skip(longn)跳过前几个元素Stream<T>distinct()去除流中重复......
  • 在 ASP.NET Core 中使用 IHttpClientFactory 发出 HTTP 请求(官方文档)
    在ASP.NETCore中使用IHttpClientFactory发出HTTP请求项目2023/04/11本文内容消耗模式发出POST、PUT和DELETE请求出站请求中间件使用基于Polly的处理程序作者:KirkLarkin、SteveGordon、GlennCondron和RyanNowak。可以注册IHttpClientFactory并将其......
  • Apifox使用-接口调试
     正文:接口调试前后置操作响应和断言环境和变量 接口调试Apifox除了写接口文档以外,另一个重要的功能就是做接口调试相当于postman。当新建了一个接口文档并保存了以后,文档的后面会出现三个页签:修改文档、运行、高级Mock 在运行这里我们就可以进行接口的调试了,当然......
  • ASP.NET Core WebAPI如何获得远程文件返回文件流给前端?
     一、根据网络路径把文件保存成byte[]返回给前端项目采用的是前后端分离的模式,后端使用ASP.NETCoreWebAPI方式,将文件流返回给前端。///<summary>///根据网络路径把文件保存成byte[]///</summary>///<paramname="filePath"></param>publicbyte[]UrlToByte(string......
  • asp.net core 2.0 web api基于JWT自定义策略授权
    原文通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端验证通过即可能获取想要访问的资源。关于JWT的技术,可参考网络上文章,这里不作详细说明,这篇博文,主要说明在asp.netcore2.0中,基于jwt的webapi的权限设置,即在asp.netcore中怎么用JWT,再次......
  • Activiti6系列(5)- 核心API
    前言本来想把《疯狂工作流讲义-activiti6.0》这本书里面的实例拿过来,但是这本书我看完后,认为里面编写的activiti6的核心API代码片段不是很清晰,有不少需要雕琢的地方才好形成一篇博客。所以我就把以前看过的黑马activiti5的案例拿过来放到activiti6.0依赖中运行测试,可以正常使用,说......
  • 一文讲解API网关核心功能——就是nginx,无非加入了安全、流控、转换、版本控制等功能
    一文讲解API网关核心功能【编者的话】本文详细讲解了API网关的基础概念,使用场景和核心功能,以及基于API网关核心引擎做的API全生命周期管理功能扩展等,最好再介绍下当前主流的开源API网关引擎。API网关概述在微服务架构体系里面,我们一般会使用到微服务网关或叫API网关。大家都比较清......
  • Unity3D___微信小游戏常用API总结
    获取用户信息游戏初始化WX.InitSDK((code)=>{//打印屏幕信息varsystemInfo=WX.GetSystemInfoSync();Debug.Log($"{systemInfo.screenWidth}:{systemInfo.screenHeight},{systemInfo.windowWidth}:{systemInfo.windowHeight},......