OpenGL的客户端和服务器模式

OpenGL的客户端和服务器模式

  在一台工作站上,绘图的整个过程不过是把数据从系统的内存中复制到图形卡中,然后绘制出图形。
但openGL是按照客户机-服务器模式设计的。我们认为可以将整个OpenGL系统分为两部分,一部分是客户端,它负责发送OpenGL命令。一部分是服务端,它负责接收OpenGL命令并执行相应的操作。比如我们编写的程序就是一个客户端,而我们的计算机图形硬件制造商提供的OpenGL的实现就是服务器。
  对于个人计算机来说,可以将CPU、内存等硬件,以及用户编写的OpenGL程序看做客户端,而将OpenGL驱动程序、显示设备等看做服务端。

知识补充:
顶点数组和显示列表

  两者都可以明显的减少函数的调用次数,但是还是各有优点的。

  1. 对于顶点数组,顶点数据是存放在内存中的,也就是存放在客户端。每次绘制的时候,需要把所有的顶点数据从客户端(内存)发送到服务端(显示设备),然后进行处理,所以可以随时修改,每次绘制的时候都会把当前数组中的内容作为顶点数据发送并进行绘制。
      
  2. 对于显示列表,所有的顶点数据和像素数据被复制到位于服务器端的显示列表内存中。所以不会重复的发送数据。数据已经存放到服务器端,并且无法取出、无法修改。
    也就是说,显示列表可以避免数据的重复发送,效率会较高;顶点数组虽然会重复的发送数据,但由于数据可以随时修改,灵活性较好。
顶点缓冲区对象

  前面说到顶点数组和显示列表在绘制立方体时各有优劣,那么有没有办法将它们的优点集中到一起,并且尽可能的减少缺点呢?顶点缓冲区对象就是为了解决这个问题而诞生的。它数据存放在服务端,同时也允许客户端灵活的修改,兼顾了运行效率和灵活性。

猜你喜欢

转载自blog.csdn.net/weixin_42536346/article/details/81515132