当前位置: 移动技术网 > 移动技术>移动开发>IOS > OpenGL的渲染架构解析和数据传递

OpenGL的渲染架构解析和数据传递

2020年07月10日  | 移动技术网移动技术  | 我要评论

渲染架构如图所示

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网