boo*_*pow 7 c opengl operating-system
OpenGL是执行图形命令的接口.现在,如果库是多平台的,那么它与GPU的交互方式是通过进行系统调用,从而使其成为多平台,还是使用驱动程序来执行其操作?
der*_*ass 12
OpenGL通常作为图形驱动程序的一部分实现.每个实现都将使用特定于实现的接口与某些内核空间组件和真实硬件进行通信.
通过在Linux上查看基于MESA的开源GL实现,可以更多地了解这些事情.他们实际上使用Linux内核的DRM(直接渲染管理器)API与HW进行通信.MESA的当前实现是有组织的,对于每个GPU,有一个drm内核驱动程序和一个用户空间DRI客户端.Mesa现在使用gallium API作为抽象层,以保持GPU特定代码较小并使其更具可移植性.OpenGL API在其上实现为"状态跟踪器:,并且独立于GPU驱动程序."甚至有一个D3D10/11状态跟踪器,但它更像是一个测试,后来被删除,因为它变成了无人维护.)
将OpenGL定义为与平台无关的API这一事实并不意味着OpenGL库将完全独立于平台.这与C库API是语言标准的一部分是相同的情况,但实现是非常特定于平台的.