1.简介
OpenGL:一种图形应用程序编程接口,简单理解就是开发的图形库。
OpenGL ES:OpenGL ES是OpenGL的子集,应用在手机、ipa、游戏主机等嵌入式系统中。
Meta:Apple为游戏开发者推出的新的平台技术。能为3D图像提高10倍的渲染性能。为解决3D渲染而推出的框架。
2.了解术语
OpenGL 上下文(Context):在openGL渲染过去需要一个Context,这个Context保存了OpenGL自身的各种状态,通过去Context可以去操作不同的资源。可以换一种方式理解:Context是openGL渲染过程中的环境,不一样的环境渲染结果就有所不一样。
3D术语
光栅化:实际绘制或填充每个顶点之间的像素形成线程
着色:沿着顶点之间改变颜色值,能轻松创建光照照射到一个立方体的效果
纹理贴图:将纹理图片附着到你绘图的图像上
混合:颜色混合效果
数据饥饿:从一块内存中将数据复制到另一块内存中,传递速度是非常慢的,内存复制数据时,CPU和GPU都不能操作数据(避免引起错误)
状态机:状态机 就是一种存在于理论中的机器,它具有以下的特点:
1.它有记忆的能力,能够记住自己当前的状态。
2.它可以接收输入,根据输入的内容和自己的状态,修改自己的状态,并且可以得到输出。
3.当它进入某个特殊的状态(停机状态)的时候,它不再接收输入,停止工作。
理论说起来很抽象,但实际上是很好理解的。
首先,从本质上讲,我们现在的 电脑 就是典型的状态机。可以对照理解:
电脑的存储器(内存、硬盘等等),可以记住电脑自己当前的状态(当前安装在电脑中的软件、保存在电脑中的数据,其实都是二进制的值,都属于当前的状态)。
电脑的输入设备接收输入(键盘输入、鼠标输入、文件输入),根据输入的内容和自己的状态(主要指可以运行的程序代码),修改自己的状态(修改内存中的值),并且可以得到输出(将结果显示到屏幕)。
当它进入某个特殊的状态(关机状态)的时候,它不再接收输入,停止工作。
OpenGL 也可以看成这样的一种机器。让我们先对照理解一下:
OpenGL 可以记录自己的状态(比如:当前所使用的颜色、是否开启了混合功能,等等,这些都是要记录的)
OpenGL 可以接收输入(当我们调用 OpenGL 函数的时候,实际上可以看成 OpenGL 在接收我们的输入),根据输入的内容和自己的状态,修改自己的状态,并且可以得到输出(比如我们调用glColor3f,则 OpenGL 接收到这个输入后会修改自己的“当前颜色”这个状态;我们调用glRectf,则 OpenGL 会输出一个矩形)
OpenGL 可以进入停止状态,不再接收输入。这个可能在我们的程序中表现得不太明显,不过在程序退出前,OpenGL 总会先停止工作的。
简单总结就是:OpenGL 是一个 状态机,它保持自身的状态,除非用户输入一条命令让它改变状态。
渲染:将图像/图形数据转换成3D空间图形的操作
图元:OpenGL中的图像都是由图元组成。在OpenGLES中,有3种类型的图 元:点、线、三⻆角形。
顶点数组(VertexArray):好比是平时我们画画中,要画的图像的⻣骨架
顶点缓冲区(VertexBuffer):显存中的某个缓存区,OpenGL进行渲染时需要快速拿到顶点数据,需要放到顶点缓冲区中。
管线:可以比喻为工厂里面常见的各种生产流水线,工厂里的生产流水线是为了提高产品的生产能力和效率,而渲染管线则是提高显卡的工作能力和效率。
可编程管线
可编程管线是将OpenGL ES固定函数渲染流水线以可编程的方式实现,在这些具体的步骤中运行自己定义的函数,这样可以灵活的扩展图形渲染流水线的功能。
固定管线
固定管线是不需要也不允许你自己去定义顶点渲染和像素渲染的具体逻辑,它内部已经固化了一套完整的渲染流程。
着色:沿着顶点之间改变颜⾊色值,能够轻松创建光照照射到一个立方体的效果。着色器(Shader)则是在图形硬件上执行的单独程序,用来处理顶点和执行光栅化任务。
纹理贴图(Texture Mapping):将纹理理图⽚片附着到你绘图的图像上。一个纹理就是一副用来贴到三角形或多边形上的图片。
混合(Blending):颜⾊色混合效果。