三、OpenGL渲染架构

OpenGL 渲染基础.png

主要分为两个模块, Client和Server.

  • Client指的是应用层代码(比如iOS)和OpenGL的API。是在CPU中。
  • Server指的是OpenGL底层API,可以直接驱动GPU渲染的,在GPU中。

数据传递

那么客户端的代码怎么把数据传入到顶点着色器、片元着色器的呢?
从图上我们可以看出, 客户端和服务器数据传输有三个通道:

  • Attributes、
  • Uniforms、
  • Texture Data。
通道名 参数类型 可传入的着色器
Attributes 顶点坐标(x、y、z)、光照坐标、投影矩阵、模型矩阵、纹理坐标 顶点着色器
Uniform 统一批次的数据,不经常发生变动的数据 顶点着色器、片元着色器
Texture
Data
纹理数据 顶点着色器、片元着色器
  • Attributes
    Attributes通道只能将数据直接传递到顶点着色器,不能直接传递到片元着色器,但是可以通过顶点着色器间接传递给片元着色器。
    通过Attributes传递的通常是经常发生变化的数据,例如颜色、顶点等。
    Attribute主要传递这些参数:颜色数据、顶点坐标、纹理坐标、光照法线等。

  • Uniforms
    用来传输统一批次的数据,不经常改动的数据,比如变换矩阵、颜色、时间戳等。

  • Texture Data
    用来传输纹理数据,可以传入顶点着色器、片元着色器。纹理的处理的逻辑主要是在片元着色器中进行的,虽然可以传入顶点着色器,但是顶点着色器不处理纹理的数据,所以没什么意义。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容