https://blog.youkuaiyun.com/jc_laoshu/article/details/69657579
https://blog.youkuaiyun.com/linuxheik/article/details/78842428
https://blog.youkuaiyun.com/andrewfan/article/details/60866636
变换管线(Transform Pipeline)
OpenGL 2.1,这个版本是允许选择使用着色器的固定管线的经典OpenGL实现。3D图形编程并不都是关于着色器的,不管是哪种编程语言,客户端都必须完成相当多的工作来管理这些着色器,以及向它们馈送(feed)几何图形、变换矩阵和其它各种数据。如下:
初始顶点数据→模型视图矩阵→变换的视觉坐标→投影矩阵→裁剪坐标→透视除法→规范化的设备坐标→视口变换→窗口坐标
客户机——服务器 ,将管线分成两部分,上半部分是客户机端,下半部分是服务器端。就OpenGL而言,客户端是存储在CPU存储器中,并且在应用程序中执行,或者在主系统内存的驱动程序中执行。驱动程序将渲染命令与数据组合起来,并发送到服务器执行。在一台典型的桌面计算机上,服务器会跨越一些系统总线,实际上,它就是图形加速卡上的硬件和内存。
服务器和客户机在功能上也是异步的,即它们是各自独立的软件块或硬件块。客户机不断地将数据块和命令块组合在一起并送入缓冲区,然后这些缓冲区会发送到服务器执行。服务器将执行这些缓冲区的内容,与此同时客户端又做好了发送下一个用于渲染的数据或信息的准备。服务器停止工作等待客户机,或者客户机停止工作等待服务器做好接受更多命令和数据的准备,这种情况称为管线停滞。管线停滞是性能噩梦。