美文网首页
1.2:OpenGL 着色器的渲染流程

1.2:OpenGL 着色器的渲染流程

作者: 小瞎_MarkDash | 来源:发表于2020-07-02 10:32 被阅读0次

    基本流程

    画一个蓝色三角形的过程:

    • 顶点着色器:拿到顶点数据,确认顶点位置。

      GLfloat vVerts[] = {
              -0.5f,0.0f,0.0f,
              0.5f,0.0f,0.0f,
              0.0f,0.5f,0.0f
          };
      
    • 曲面细分着色器:使几何体更加顺滑之类的操作。

    • 几何着色器:接收来自顶点着色器的一个片元的一组顶点,然后可以对其进行变换,可以输出新的不同类型的片元,也可以增加顶点数

    • 图元设置:设置为以下其中一个:点、线段、连线、环线、三角形等。

    • 剪切:去除视口以外的绘制。

    • 光栅化:如果设置为三角形,此步骤会获得 三角形所有的像素点。

    • 片元着色器:给上面获取到的像素点上色。

    • 渲染上屏:等待同步信号,交换缓冲区。

    图片是怎么显示的?

    CPU 做图片解码
    GPU 做视频解码

    • CPU 解码:一般拿到的是 .jpg 之类的压缩格式,要通过 CPU 解码成 位图 (未经压缩)。

    • GPU 纹理混合:经过上述 着色器渲染流程,将最终数据放到 帧缓冲区。

    • 时钟信号:垂直同步信号 V-Sync (水平同步信号 H-Sync)

    • 渲染上屏

    图片的强制解压就是对图片进行重新绘制,得到新的位图,iOS 需要使用 CGBitmapContextCreate。可以看看大佬们是怎么写的,参考 YYImage 和 SDWebImage。

    相关文章

      网友评论

          本文标题:1.2:OpenGL 着色器的渲染流程

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