我已经理解API是两个代码之间的粘合剂。它们以库的函数的形式实现,最终在运行时期间在计算机上编译和需要。
那么这不是说它们的实现是特定于操作系统的吗?
我特别想知道opengl的实现是否特定于操作系统?我正在使用fedora 19并安装了Mesa库。
答案 0 :(得分:6)
某些API可能以特定于操作系统的方式实现,而其他API则不是。
这取决于是否需要低级功能来实现它们,或者API运行的环境是否提供或不提供实现它们所必需的构建块。
例如,JDBC type-4驱动程序以独立于操作系统的方式实现JDBC API。
其他API(如POSIX)可能必须以特定于操作系统的方式实现,而其中某些部分可能可以独立于操作系统的方式实现。
另一个例子是APR,Apache Portable Runtime,它以特定于操作系统的方式实现。另一个API,Serf建立在APR之上,因此它的实现实际上与操作系统无关。
总之,作为一般规则,低级API倾向于以特定于操作系统的方式实现,而高级API将以其他低级API实现,因此更有可能在与操作系统无关的方式。
这个答案的第一部分是在问题是一般API问题时编写的。后来问题被改为专门针对OpenGL。
我不太熟悉OpenGL的Mesa实现;我认为出于可维护性原因,其中很大一部分是以独立于操作系统的方式实现的,但是由于A)需要与硬件接口 - 这往往在不同的操作系统上以不同的方式完成 - 和B )要实现良好的性能,还需要一个不显着的操作系统特定代码。
要记住的另一件事是POSIX API有灰色区域(特别是在处理线程的部分),因此对于更高级别的API(如Mesa),可能需要特定于操作系统的代码来解决差异问题。在不同平台上实现。
答案 1 :(得分:2)
OpenGL实现当然是特定于操作系统的。它们与操作系统集成在一起,通常与设备驱动程序集成。
但是,OpenGL规范与操作系统无关,因此OpenGL API不是特定于操作系统的。
请注意OpenGL初始化(窗口和渲染上下文)是非常依赖操作系统的(WGL或GLX API实现)。