基础图形管线
来源:互联网 发布:日本经济数据2016 编辑:程序博客网 时间:2024/05/17 20:34
OpenGL中的图元(Primivtives)只不过是顶点的集合以预定义的方式结合在一起罢了。
------------客户端和服务器
管线分成两部分客户端和服务器端
服务器和客户机在功能上也是异步的。
客户机不断地将数据块和命令块组合在一起并送入缓冲区,然后这些缓冲区会发送到服务器执行。服务器将执行这些缓冲区的内容,,与此同时客户端有做好了发送下一个用于渲染的数据或信息的准备。如果服务器停止工作等待客户机,或者客户机停止工作来等待服务器做好接受更多命令和数据的准备,我们就把这种情况称为管线停滞。
CPU:将渲染命令与数据组合起来送入缓冲区,发送到服务端
GPU:执行缓冲区的内容
-------------着色器
这些着色器必须从源代码中编译和链接到一起才能使用。最终准备就绪的着色器程序随后在第一阶段构成顶点着色器,在第二阶段构成片段着色器。
顶点着色器处理从客户机输入的数据,应用变换,或者进行其他类型的数学运算来计算光照效果、位移、颜色值,等等。为每个顶点执行一次,并行执行。
顶点做好了光栅化的准备。顶点组合在一起,逐个片段进行光栅化。每个片段执行片段着色器而进行填充,片段着色器会输出我们将在屏幕上看到的最终颜色值。并行执行。
属性,就是每个顶点都要做改变的数据元素。实际上,顶点为止本身就是一个属性。属性值可以是浮点数、整数、或布尔数据。属性总是以四维向量的形式进行内部存储的,即使我们不会使用到所有4个分量。OpenGL会将4个分量设为1。实际上,如果我们只在x、y平面中绘制图,那么第3个分量将会自动设为0,而第四个分量依旧设为1。
属性会从本地客户机内存中复制存储在图像硬件中(这种情况的可能性很大)的一个缓冲区上。这些属性只供顶点着色器使用,对于片段着色器来说没有什么意义。
Uniform 值本质上像属性一样,可以是浮点数、整数或布尔值,但和属性不同的是,顶点着色器和片段着色器中都可以使用Uniform变量。Uiniform可以是既可以是标量,也可以是矢量类型,我们也可以使用Uniform矩阵。
Uniform变量在每个批次改变一次,而不是每个顶点改变一次。Uniform变量一个最常见的应用是在顶点渲染中设置变换矩阵(第四章介绍)。
纹理并不仅仅是表现图形。很多图形文件都是以无符号字节(每个颜色通道8位)形式对颜色分量进行存储的,但是我们仍然可以设置浮点纹理。这就是说,任何大型浮点数据块(例如消耗资源很大的大型查询表)都可以通过这种方式传递给着色器。
输出数据是作为一个阶段着色器的输出定义的,而在后续阶段的着色器则是作为输入(In)定义的。
- 基础图形管线
- Unity&Shader基础篇-可编程GPU图形绘制管线
- Direct3D11图形管线
- GPU图形绘制管线
- GPU图形绘制管线
- 计算机图形管线
- Direct3D11图形管线
- 图形渲染管线
- 图形渲染管线
- 图形渲染管线
- 可编程图形渲染管线
- 图形学 图形渲染管线
- GPU 图形绘制管线
- GPU图形绘制管线
- GPU图形绘制管线
- 图形学笔记:图形管线
- GPU 图形绘制管线
- GPU图形绘制管线
- uva 1399 - Puzzle(AC自动机)
- TCP/IP详解--三次握手和四次握手 Dos攻击
- java中static作用详解
- 1085 - All Possible Increasing Subsequences[树状数组]
- 第十一章 11.3.4节练习
- 基础图形管线
- ThreadLocal保证DateFormat线程安全
- Java现场信息获取蛋疼方法
- 天猫大数据总结2
- 开篇:AutoCAD ObjectARX 之三金开发 -- 介绍
- SQL的关联查询
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- poj 2029(二维树状数组)
- 九度oj-1014-排名