OpenGL的渲染架构解析和数据传递
程序员文章站
2022-06-22 17:27:15
OpenGL的渲染架构解析...
渲染架构如图所示
架构解读
Client与Server
- Client是指常见的iOS代码和OpenGL API方法,这部分是在CPU中运行的,与我们平常开发所说的前端iOS或者android开发不一样,它是指CPU上所存储的代码,我们叫客户端。比如,我们会用到OpenGL的代码,C代码,C++代码;
- Server是指OpenGL底层的渲染等处理,它调用的是GPU芯片,顶点着色器和片元着色器传递颜色,我们会不断的从客户端把数据传到Server,不断的执行起来。总而言之,Client就是我们编写的程序,而Server是计算机图形硬件厂商所提供的OpenGL的实现;
- Server是存储在CPU存储器中的,并在应用程序或者在内存的驱动程序中执行。驱动程序将渲染命令和数据组合起来,发送给服务器执行;
- Server不断的将数据块和命令组合起来送入缓冲区,缓存区会发送到服务器端执行。服务器端将执行这些缓冲区的内容,客户端又做好了下一次发送渲染数据和命令的准备。
Shader:
- 着色器(Shader)是用来实现图像渲染的,用来替代固定渲染管线的可编辑程序。主要有Vertex Shader(顶点着色器) 和 Fragment Shader(片段着色器)两种;
- 运行原理:片段着色器将顶点着色器输出的片段作为输入,片段的顶点属性已被光栅化单元进行了插值处理。
数据传递方式
Texture Data,Uniforms,Attributes
- 通常来说,Texture Data,Uniforms,Attributes(ins)数据都会传到顶点着色器,但是顶点着色器并不会处理太多关于纹理的计算,纹理数据更多的是片段着色器来处理;
- Attributes(属性):常为需要改变的数据,比如:颜色数据,顶点数据,纹理坐标,光照法线;它可以直接传递到顶点着色器,间接传递到片元着色器,不能为了将属性直接传递到片元着色器而通过uniform传递到片元着色器;它的属性值可以是浮点数、整数、布尔数据。
- Uniforms(统一):可以直接传递到顶点着色器和片元着色器,它可以是浮点数、整数、布尔数据;
- Texture Data(纹理数据):在顶点着色器、片段着色器中都可以对纹理数据进行采样和筛选,常见的有颜色填充和纹理填充;
Out
- 输出类型可以简单的从上一个阶段传递到下一个阶段,也可以不同的方式插入。
本文地址:https://blog.csdn.net/Forever_wj/article/details/107193581