无论平台如何,OpenGL的输入方式是否相同?

时间:2014-02-17 03:56:24

标签: opengl cross-platform theory

我有兴趣购买OpenGL,我知道它被定义为跨平台。这是否意味着我将输入与在Windows,Mac或Linux呢?

//example pseudocode to make a circle with a radius of 500 pixels and 5 pixels wide 
createCircle(500,5);

如果键入的话,这意味着OpenGL具有为Windows和Mac存储的API集,并且基于该平台,程序在其上执行调用适当的一个?如果不是,那么这里的过程是什么?

4 个答案:

答案 0 :(得分:2)

对于3D绘图方面,是的。但实际上,除非使用中间件,否则完整OpenGL应用程序所需的API /用法会有所不同。具体在3个方面,

1)操作系统依赖性 - 图形在屏幕上呈现的方式取决于显示驱动程序,这使得图形也依赖于操作系统。因此,您将使用不同的API来创建与显示适配器的连接。

2)窗口系统依赖性 - 再次依赖于OS。例如,在Linux上,您可以使用Xorg,Wayland或普通帧缓冲等。根据这些,为绘制更改创建曲面的方式

3)特定于平台的扩展 - 某些高性能扩展依赖于特定的操作系统行为,而不是跨平台。它们采用GL_ARB,GL_OES等形式。

答案 1 :(得分:1)

OpenGL将以完全相同的方式显示跨平台。每个平台的类型也相同。在编译时,API将为正确的平台选择正确的平台相关代码,以插入最终的可执行文件。

答案 2 :(得分:1)

从官方文件中: https://www.opengl.org/documentation/implementations/

是的,似乎是这样。大多数语言的API绑定在大多数情况下都是相同的。但是,某些语言的行为可能仍然不同。您将不得不查看参考手册。

对于使用JVM之类的解释器的单一语言,如Java,Python等。对于任何系统都应该是相同的,因为这是设计决策的一部分。

答案 3 :(得分:0)

OpenGL不是一个库,它是一个规范。 API在所有平台上都是相同的,但它遵循主机操作系统的调用约定和基类型。

因此,函数void glPixelStorei(GLenum, GLint)在所有平台上的名称相同,但GLenumGLint确切类型可能取决于目标平台。