OpenGL 渲染管线流程解析

OpenGL 渲染管线流程解析_第1张图片
打撒所多.jpg

这张图对openGL的开发者非常重要 我们在处理任何图片的渲染都是根据它 基于openGl封装的框架也是遵守这个规则

客户端 服务端

跟我们平常理解的客户端 和服务端不一样 这个管线分为两部分 上半部分是客户端Client 下部分是服务端Server
客户端 负责发送openGL命令 服务端接受openGL的命令并执行相应的操作 对于个人计算机而言 CPU 内存 我们编写的openGL代码可以看做客户端 而openGL驱动程序显示设备可以看做是服务端
客户端和服务端都是异步执行的 客户端不断的把数据和命令组合到一个 发送到缓存区 然后缓冲区将这些发送到服务器执行 我们都希望他们都在不停的工作 如果服务端停止工作来等待客户端 或者客户端来等待服务端的情况叫做管线停滞

着色器

顶点着色器(Vertex Shader) 和片元着色器(Fragment Shader)
顶点着色器 将客端传入的顶点数据 进行计算 并且各个顶点直接的计算是并行的
片元着色器 片元着色器将计算每个像素的颜色值

属性、uniform值、纹理、输出

属性 就是每一个顶点都要进行改变的数据元素
它可以是浮点数 整数 布尔值 和颜色数据 纹理坐标和光照坐标 他能直接的传递到顶点着色器 只能间接的通过GLSL代码传递到片元着色器

uniform 值 能直接的传递到顶点着色器 和片元着色器 他是对同一个批次的的所有顶点都取统一的值 比如设置一个表面的颜色值 比如在顶点渲染中的变换矩阵 他可以是浮点数 整数 布尔值 和 矢量类型 uniform 矩阵

纹理 可以传递给顶点着色器 和片元着色器 不过我们一般都不传递给顶点着色器 比如 片元着色器 对一个纹理进行采样 然后 在一个图形表面渲染纹理数据

输出 输出数据是前一个阶段的输出定义值 作为下一个阶段的输入值

你可能感兴趣的:(OpenGL 渲染管线流程解析)