Client、Server
- Client:它是指CPU上所执行的代码。比如,我们会用到OpenGL的API,C代码,C++代码等。
- Server:它调用的是GPU芯片,OpenGL的API会不断的从client把顶点着色器和片元着色器传递到Server,不断的执行起来。
Client是我们编写的程序,而Server是GPU厂商所提供的OpenGL的实现。
client如何传递数据都server
根据渲染架构图,可以通过Attributes、Uniforms、texture data 传递数据到server。
-
Attributes(属性)
1.Attributes常为需要改变的数据,比如:颜色数据,顶点数据,纹理坐标,光照法线;- 可以直接传递到顶点着色器,间接传递到片元着色器,不能为了将属性直接传递到片元着色器而通过uniform传递到片元着色器;
- 属性值可以是浮点数、整数、布尔数据。
-
Uniforms
- Uniforms值是比较统一批次的,不会发生太多改变;例如变换矩阵、颜色值等
- 可以直接传递到顶点着色器和片元着色器;
- uniforms可以是浮点数、整数、布尔数据。
-
texture data
- 在顶点着色器、片段着色器中都可以对纹理数据进行采样和筛选。
- 典型的应用场景:片段着色器对一个纹理值进行采样,然后在一个三角形表面应用渲染纹理数据。
- 纹理数据,不仅仅表现在图形,很多图形文件格式都是以无符号字节(每个颜色通道8位)形式对颜色分量进行存储的。
输出数据
- out是作为一个阶段着色器的输出定义的,后续阶段的着色器则作为输入定义。
- 输出数据可以简单的从一个阶段传递到下一个阶段,也可以用不同的方式插入。
- 客户端的代码接触不到这些内部变量我们的OpenGL开发暂时接触不到。
网友评论