2014-02-17 35 views
0

我对拾取OpenGL感兴趣,我知道它被定义为跨平台的这是否意味着我会在Windows,Mac或Linux上键入代码?无论平台是OpenGL类型都一样吗?

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

如果键入的同一这是否意味着OpenGL的具有存储适用于Windows和Mac和基于该平台的API集执行程序就可以调用恰当的呢?如果不是,那么这里发生的过程是什么?

回答

1

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

+0

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

1

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

是,它似乎很。它的大部分语言的API绑定似乎是相同的。但是,某些语言的行为仍然可能不同。你将不得不看参考手册。

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

2

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

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

2)窗口系统依赖关系 - 依赖于操作系统。例如在Linux上,你可以使用Xorg,Wayland或普通帧缓冲等。根据这些,你为绘图变化创建曲面的方式

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

+0

这使我略微困惑。你可以输入类似#include thisAPI或#include那个API,然后输入什么代码将使用该“标题”(缺乏更好的词汇和知识)来使用适当的API? – Scott

0

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

所以功能void glPixelStorei(GLenum, GLint)在所有平台上都被命名为相同,但是GLenumGLint确切的类型可能取决于目标平台。

相关问题