OpenGL ES的简介
OpenGL ES 开放式图形库(OpenGL的)⽤用于可视化的⼆二维和三维数据。它是⼀一个多功能开放标准图形库,⽀支持2D和3D数字内 容创建,机械和建筑设计,虚拟原型设计,⻜飞⾏行行模拟,视频游戏等应⽤用程序。您可以使⽤用OpenGL配置3D图形管道并向其提交数 据。顶点被变换和点亮,组合成图元,并光栅化以创建2D图像。OpenGL旨在将函数调⽤用转换为可以发送到底层图形硬件的图形命 令。由于此底层硬件专⽤用于处理理图形命令,因此OpenGL绘图通常⾮非常快。应用于移动端的图形渲染框架,目前分1.0,2.0,3.0版本,1.0是固定管线,2.0和3.0是可编程管线,差别不大,由于我是做iOS开发,下面内容主要是针对iOS开发的,在iOS12.0系统之后,苹果已经不让用OpenGL ES,推出Metal,但是苹果底层很多代码都是用OpenGL ES做的渲染框架,所以就像UIAlertView一样,也是可以使用的,只是会报警告.
OpengGL ES基本知识:
1.普通顶点坐标系: 比如创建了一个View,坐标系以中心点为(0,0,0)的点,X值从左到右为(-1,1),Y值从下到上为(-1,1),Z轴垂直于View,越往里越为负数,往外为正数.
2.纹理坐标:也就是一张图片,坐标系和iOS的坐标系有点不同,View的坐标原点在左上角,而纹理的坐标原点在左下角.
3.图元类型:OpenGL ES只有3中图元,点,线,三角形,如下图所示,球体也是由三角形组成,三角形越多,图形越圆.
4.GPU和CPU:CPU擅长线性处理,而GPU擅长多线程处理,就比如CPU是一个零件加工机器,加工速度很快,而GPU就像1000个工人, 一台机器和1000个人,同时加工一个简单零件,人可以同时开工,机器只能一个一个加工,虽然它加工速度很快,而OpenGL ES的代码主要是放在GPU上执行,所以数据,纹理等内容放在GPU上处理速度更快
参考连接:https://blog.csdn.net/u012964944/article/details/82788620
OpenGL ES :
1.顶点数据:比如一个三角型,它有三个顶点,再次重复,图片是四边形,它由两个三角形构成.
2.纹理顶点:也就是图片的顶点,左下角为(0,0),右上角为(1,1)
3.顶点和纹理的对应:类似于贴瓷砖,顶点数据和纹理坐标存在对应关系,不能将瓷砖折起来贴,这能旋转似的贴,当然图片有正反,也可以贴成一张倒得图片
4.shader:着色器,分两种着色器,顶点着色器和片元着色器,顶点着色器负责处理顶点,片元着色器负责处理颜色
5.Program:类似于管理者,专门管理顶点着色器和片元着色器,就像一个大人带两个小孩.
6.深度测试:我们只负责开启和清空,完全由ES处理,画立体图像的时候,会在显存中保存每个图片的深度,也就是Z轴数据,不会让本来在前面的图形放在后面,绘制立体图形时,开启.
7.正背面剔除:比如交叉图形,先画两个三角形,再画另一个三角形时,会造成覆盖,类似于下面的图形,如果用UIView去放三个交叉的图形,就做不到,立体图形最后也是要变成二维图形,开启后,被遮挡的部分OpengGL ES就会不画,从而可以画出这样一个交叉图形
8.矩阵:大学里的线性代数,OpenGL ES通过矩阵通过点乘和叉乘来记录一个图形的变化状况,投影矩阵,用来记录视角,模型矩阵用来记录(平移,缩放,旋转),顶点坐标与矩阵进行数学运算后,可以得到最终的点位置.
OpenGL ES流程:
以下图片中,由OpenGL ES处理的过程,图元装配,光栅化,逐片段操作,帧缓存区,而我们要做的事是提供顶点数据,编写着色器,将数据出入到着色器,呈现图形的内容
代码流程:由程序员编写
1.iOS内置框架提供 GLKView/CAEAGLLayer/EAGLContext,用来显示链接OpenGL的数据
2.提供顶点数据/纹理坐标/图片信息等
3.将坐标顶点复制到显存中
4.编写顶点着色器/片元着色器
5.编译两个着色器并链接到Program中
6.将顶点,纹理等传入到shader中
7.将图形呈现到iOS提供的视图上来.
网友评论