无论平台如何,OpenGL 的类型是否相同



我对拿起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集,并且根据执行程序的平台调用适当的API集?如果不是,这里进行的过程是什么?

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

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

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

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

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

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

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

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

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

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

最新更新