【iOS】OpenGL入门资料整理

2019-06-22  本文已影响0人  mapleYe

一、OpenGL、OpenGL ES专业名词解析

1、图形API简介

注:iOS12开始弃用OpenGL,改用Metal

2、OpenGL专用名词

2.1、OpenGL上下文(context)

在应用程序调用任何OpenGL执行之前,首先需要创建一个OpenGL的上下文。这个上下文是一个非常庞大的状态机,保存了OpenGL中的各种状态,这也是OpenGL指令的基础。

2.2、 OpenGL状态机

状态机描述了一个对象在其生命周期内所经历的各种状态,状态间的转变,发生转变的动因,条件以及转变中所执行的活动。或者说,状态机是一种行为,说明对象在其生命周期中响应事件所经历的状态序列以及对那些状态事件的响应。

2.3、渲染

将图形/图像数据转换成3D空间图像操作叫做渲染(Rendering).

2.4、顶点数组(VertexArray)和顶点缓冲区(VertexBuffer)

2.5、管线

在OpenGL下渲染图形,就会有经历一个一个节点。而这样的操作可以理解管线。大家可以想象成流水线。每个任务类似流水线搬执行。任务之间有先后顺序,管线是一个抽象的概念,之所以称之为管线是因为显卡在处理数据的时候是按照一个固定的顺序来的,而且严格按照这个顺序。就像水从一根管子的一段流到另一端,这个顺序是不能打破的。

2.6、固定管线/存储着⾊色器器

2.7、着色器程序shader

2.8、顶点着色器VertexShader

2.9、片元着色器FragmentShader

2.10、GLSL(OpenGL Shading Language)

OpenGL着色语言(OpenGL Shading Language)是用来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。比如:视图转换、投影转换等。GLSL(GL Shading Language)的着色器代码分成2个部分:Vertex Shader(顶点着色器)和Fragment(片断着色器)

2.11、光栅化

2.12、纹理

纹理可以理解为图片. 大家在渲染图形时需要在其编码填充图片,为了使得场景更加逼真.而这里使用的图片,就是常说的纹理.但是在OpenGL,我们更加习惯叫纹理,而不是图片.

2.13、混合(Blending)

在测试阶段之后,如果像素依然没有被剔除,那么像素的颜色将会和帧缓冲区中颜色附着上的颜色进行混合,混合的算法可以通过OpenGL的函数进行指定。但是OpenGL提供的混合算法是有限的,如果需要更加复杂的混合算法,一般可以通过像素着色器进行实现,当然性能会比原生的混合算法差一些。

2.14、变换矩阵(Transformation)

例如图形想发生平移,缩放,旋转变换.就需要使用变换矩阵

2.15、投影矩阵(Projection)

用于将3D坐标转换为二维屏幕坐标,实际线条也将在二维坐标下进行绘制.

2.16、渲染上屏/交换缓冲区(SwapBuffer)

二、着色器渲染流程图

着色器渲染流程.png

三、Mac OpenGL环境搭建

https://juejin.im/entry/5c8662dbf265da2de52dc3ea

四、参考

https://www.jianshu.com/p/1b09101aa117

上一篇 下一篇

猜你喜欢

热点阅读