我最近决定开始学习OpenGL,我有几个问题。主要是,我想知道OpenGL是否依赖于窗口系统(如GTK +)以及窗口系统API的扩展,它允许创建OpenGL区域。我也在OpenGL Wiki上看到了Xlib的一些东西,这似乎是与X-Windowing系统更直接的连接。 Xlib是一个更基本的窗口系统,还是可以创建完全由OpenGL控制的窗口?在两者都可能的情况下,这是更广泛接受的标准吗?
答案 0 :(得分:7)
OpenGL的规范与窗口系统完全相同不可知。就OpenGL而言,没有窗口。在这方面,所有这些都是系统提供的默认帧缓冲区(FBO 0),它通常连接到某个窗口 - 但是,并非必须如此。例如,有pbuffers,这是一种生成OpenGL上下文而无需显示可见窗口的方法。
所有这些问题都依赖于平台,因此超出了OpenGL本身的范围,而是一组依赖于平台的API:
EAGL
,这与iPhone和iPad等iOS设备特别相关。Xlib是一个更基本的窗口系统,还是可以创建完全由OpenGL控制的窗口?
xlib 是实现X协议的库,因此当您使用X Window系统时,它是最低级别的API(除了手动重新实现X协议)。 GTK +也会在这样的平台上使用它。
Windows永远不会受到GL的控制。您将始终需要一些依赖于平台的方法来创建和管理窗口,OpenGL和GL上下文API都不会对您有所帮助。
如果您只想要一个与GL一起使用的窗口,那么使用像GTK +或Qt这样的GUI工具包可能会有点过分。有一些简单的OpenGL窗口和上下文管理库,如GLFW或freeGLUT(这是目前仍在积极开发的GLUT specification实现),它们也抽象了特定于平台的API。如果您正在尝试构建游戏或多媒体软件,SDL和SFML等库也可能值得一看,因为它们为GL以外的其他概念提供了一组抽象,尤其是音频。