美文网首页
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