美文网首页
OpenGL-对一些常见专业名词的理解

OpenGL-对一些常见专业名词的理解

作者: 泽泽伐木类 | 来源:发表于2020-07-02 23:04 被阅读0次

前言

OpenGL,一个跨平台的图像渲染引擎框架;
OpenGL ES,作为OpenGL的一个子集,针对移动端设备或者游戏主机等嵌入式设备的渲染框架;
Metal,Apple推出的图形渲染框架,目前作为iOS底层的渲染的核心;

常见名词

  • 状态机(Context):在使用OpenGL指令前,需要创建一个OpenGL的上下文(Context),来保存一些配置信息(或者叫状态信息),可以保存状态,接收输入,停止状态。就比如我们在使用iOS中的CoreGraphics绘图的操作一样:
//获取上下文
CGContextRef context = UIGraphicsGetCurrentContext();
//更新/设置上下文状态
CGContextAddEllipseInRect(context, CGRectMake(0,0,100,100));
//更新/设置上下文状态
CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
//更新/设置上下文状态
CGContextFillPath(context);

-渲染(Render):绘制到屏幕的过程。

-顶点数组(VertexArray):屏幕上的位置信息集合(顶点数据),比如UIView.frame,通常存放在内存中。

-顶点缓冲区(VertexBuffer):将顶点数据缓存到GPU的显存中。

-管线:就像工厂的生产流水线,一个接一个的环节。

-固定管线:一个设定好的生产方式;比如调用一些系统固定功能的API,我们不需要关注内部实现,而且无法改变它的内部实现;在OpenGL中就是固定着色器(OpenGL提供了一些预设好的渲染API).

-可编程管线:可自定义,正好跟固定管线相反,在OpenGL下使用GLSL语法来自定义。

-着色器(shader):运行在GPU上的一个代码段。

-固定着色器(存储着色器):预设好的代码段,直接调用,不可更改。

-自定义着色器:使用GLSL语法自定义代码段,比如顶点着色器(确实要显示图形的位置;缩放/平移/旋转;3D效果的投影换算),片元着色器(对图形每一个像素点的处理,GPU并行计算)。

-GLSL: OpenGL Shader Language 的缩写

-光栅化:将代码逻辑位置转换为屏幕像素物理位置的过程,首先确认图像像素范围,然后将颜色映射上去。

-纹理:理解为一张图片,位图(bitmap);

-混合(Blend):对两个图层重叠部分的渲染计算。比如两个半透明视图重叠部分的颜色计算。

-变换矩阵:矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是数学线性代数中的一个概念。比如iOS下CGAffineTransform,可以实现视图的平移,缩放,旋转。

-投影矩阵:⽤用于将3D坐标转换为⼆二维屏幕坐标,实际线条也将在⼆二维坐标下进⾏行行绘制。

-正投影:又称为平行投影,1:1的绘制,描述2D效果

-透视投影:描述3D效果,具有空间感(远小近大)

-物体坐标系:类似于UIView.layer.bounds

-世界坐标系:类似于UIView.layer.frame

以上的解释可能不是很标准,只是个人对这些名词的一些理解,如果有错误的地方,请指正,谢谢!

图片的渲染流程

图片的渲染是有CPU和GPU共同完成的

  • CPU:计算显示的位置(Frame),图片解压(png->bitmap)等,通过总线交给GPU;
  • GPU:顶点着色->图元装配->光栅化->片元着色->帧缓存区->渲染显示

CoreGraphics 解压图片

1.CGBitmapContextCreate()
2.CGContextDrawImage()
3.CGBitmapContextCreateImage()

总结

以上信息待完善。这里先记录一下!!!

相关文章

网友评论

      本文标题:OpenGL-对一些常见专业名词的理解

      本文链接:https://www.haomeiwen.com/subject/wsntqktx.html