[TOC]
0. 图形API简介
-
OpenGL
(Open Graphics Library)是⼀个跨编程语⾔、跨平台的编程图形程序接⼝. -
OpenGL ES
(OpenGL for Embedded Systems)是 OpenGL 的⼦集,针对⼿机、PDA和游戏主机等嵌⼊式设备⽽设计,去除了许多不必要和性能较低的API接⼝。 -
DirectX
是属于Windows上⼀个多媒体处理框架.并不⽀持Windows以外的平台. -
Metal
: Apple推出的,该技术能够为 3D 图像提⾼ 10 倍的渲染性能.
1. 上下⽂ ( context )
在应⽤程序调⽤任何OpenGL的指令之前,需要安排⾸先创建⼀个OpenGL的上下⽂。这个上下⽂是⼀个⾮常庞⼤的状态机,保存了OpenGL中的各种状态,这也是OpenGL指令执⾏的基础。
我理解大概相当于ps的工具面板,能存储文字的颜色状态等
image.png
2. 渲染
将图形/图像数据转换成2D空间图像操作叫做渲染(Rendering).
3. 顶点数组( VertexArray ) 和 顶点缓冲区( VertexBuffer )
画矩形时,需要确定六个顶点的位置,这些顶点就是顶点数据。
在OpenGL ES中,有3种类型的图元:点、线、三⻆形。
顶点储存在哪里呢?顶点数据->内存中,这种叫顶点数组.
⽽性能更⾼的做法是,提前分配⼀块显存,顶点数据-> GPU 显存,这种叫顶点缓冲区.
4. 位图
假设120 * 120像素的一张图片,这张图占14400个像素,一般RGB是0-255是256种颜色,就是2的八次方种也叫8位深,一个字节占八位,所以RGBA是4个字节
120 * 120 = 14400 -> RGBA -> 14400 * 4 = 位图
5.管线,固定管线,可编程管线
管线像流⽔线,像汽车流水线.
固定管线: 对应⾮常多模具 (固定着⾊器) ->结果生产出哈弗,wey等
可编程管线: ⾃定义编程模具(GLSL语法来驱使GPU)->结果生产出某大佬专用的哈弗.
6. 着⾊器
函数/⽅法(代码段) -> CPU来使⽤; shader(代码段)->GPU
- 固定着⾊器(存储着⾊器)
苹果提供API(代码段)->调⽤(参数) OpenGL 来提供 ; - ⾃定义着⾊器: 进⾏⾃定义(⾃⼰基于GLSL语法来进⾏编写代码段)
7. GLSL
OpenGL着⾊语⾔(OpenGL Shading Language),是在图形卡的GPU上执⾏的。代替了固定的渲染管
线的⼀部分,使渲染管线中不同层次具有可编程性。⽐如:视图转换、投影转换等。GLSL(GL Shading Language)的着⾊器代码分成2个部分:Vertex Shader(顶点着⾊器)和Fragment(⽚元着⾊器)
- 顶点着⾊器: ⽤来处理顶点相关代码 1.确定位置 2.缩放/平移/旋转位置换算 3.⼿机端显示3D ⼿机屏 幕实际2D, 3D图形数据->2D(投影换算) ->OpenGL ES
- ⽚元着⾊器: ⽚元(像素点)着⾊器. 处理⼀个⼀个像素点; 120 * 120 像素点. 14400次 GPU 并⾏运 算;
8. 图元和光栅化
过程:顶点—> 图元 —> 片元—> 像素
image.png
放大,看到一格一格的,就是光栅化
image.png
9. 纹理
可以理解为图片,一般为tga格式
10. 混合(Blending)
两张有透明度的图片,有重叠在一起的时候,颜色混合计算.
11.变换矩阵(Transformation) ,投影矩阵Projection
• 变换矩阵. 例如图形想发⽣平移,缩放,旋转变换.就需要使⽤变换矩阵.
• 投影矩阵Projection ⽤于将3D坐标转换为⼆维屏幕坐标,实际线条也将在⼆维坐标下进⾏绘制
网友评论