OpenGL (Open Graphics Library)是一个跨编程语言,跨平台的编程图形程序接口
OpenGL ES (OpenGL for Embedded Systems) 是OpenGL三维图形API的子集。
DirectX 是windows上的一个多媒体处理API,并不支持windows以外的平台。
Metal 。 Metal是apple为了解决3D渲染而推出的框架。
openGL/OpenGLES/Metal 在任何项目中解决问题的本质 就是利用GPU芯片来高效渲染图形图像
图形API是iOS开发者唯一接近GPU的方式
渲染:将图形/图像数据转换成3D空间图像操作叫做渲染 (Rendering)
顶点数组[Vertex Array] 顶点缓冲区(VertexBuffer)
用途:
1.游戏开发 2.视频解码后的数据渲染 3.地图上的数据渲染 4.动画的绘制 5.视频滤镜
2D笛卡尔坐标系
3D笛卡尔坐标系
视口 gViewPort(x.y.z)
openGL投影方式:
1.立体图形-> 透视投影
2.平面图形->正投影
openGL摄像机坐标系(观察者)
openGL坐标系(世界坐标系 惯性坐标系 物体坐标系)
局部空间(物体空间坐标系)
世界空间
观察空间
裁剪空间
屏幕空间
MVP矩阵
model view projection
世界坐标系
物体坐标系
摄像机坐标系
惯性坐标系
物体/世界/照相机空间->右手系
规范化设备坐标->左手系
atttribute属性 (经常发生改变的值) 可以直接传递到片元着色器,通过gls代码间接传递
颜色数据 顶点数据 纹理坐标 光照法线
uniform 值 (没有发生太多改变) 直接传到片元着色器/顶点着色器
视频->解码->一帧帧图片组成->openGL es /metal
视频颜色空间 YUV
正投影 /透视投影