一、OpenGL的CS模型
OpenGL采用的是客户端与服务端模型。当应用调用OpenGL函数时,会告知OpenGL客户端,再由客户端发送绘制命令给OpenGL服务端。
客户端、服务端和传输管线 可以根据具体需要具体实施。
1、分离模式
客户端和服务端不在同一台计算机上
2、组合模式
客户端和服务端在同一台计算机上
例如:
Mac硬件架构图:
二、OpenGL命令异步执行
1、异步(Asynchronously)
应用发送OpenGL命令的之后,将命令传递给OpenGL客户端,客户端不会等待绘制完成才返回,而是在OpenGL服务端完成之前就会返回。即是异步绘制。
2、可能延时执行(Delay execute)
OpenGL客户端可能会缓存命令,推迟发送给OpenGL服务端。这是因为防止客户端和服务端之间的频繁同步。详细设计策略见另一篇文章。
三、顺序执行
先发送的先执行,发送顺序不会被打乱。
四、客户端的数据即刻传输
在控制权返回给应用之前,OpenGL客户端会复制应用通过参数传递进来的数据。在客户端在将数据传递给服务端之前一般会被格式化。之后传输到服务端,传输的过程会增加额外的开销,所以尽量使数据大小最小化。
五、依赖载体操作系统的关键功能
不要企图去与干扰载体操作系统的图像绘制子系统。