我可以编写 OpenGL 应用程序而不将其绑定到某个窗口库吗?

Can I write an OpenGL application without binding it to a certain windowing library?

正如我之前在一个问题中提到的,我正在尝试用 OpenGLC++ 中制作一个简单的游戏引擎。

我目前正在使用 GLFW 来绘制 OpenGL 上下文,我之所以选择它是因为我听说它是​​最快的方法之一。但是,它不支持小部件,我真的不想自己写。所以我决定稍微了解一下 Qt,因为它可以让我拥有一个用于渲染上下文的窗格和不同的便利栏,以及用于编辑世界地图、设置 OpenGL 规则等的所有奇特元素。

不过,我想在该游戏的导出版本上使用 GLFW如果没有某种抽象层,这可能吗?

提前致谢! :)

是的,这绝对是可能的,事实上我正在编写一个 3D 引擎,它不与任何窗口库耦合,可以与 Qt、SDL 或其他任何东西一起使用。

您当然只需将常规 GL 调用包装到更高级别的层中,这要求您不要在 GL 代码中调用 "SwapBuffers"。

如果您所说的抽象层是指 "inversion of control",那么您不想重写 "Render/Update" 方法,这正是我所做的。如果 "abstraction layer" 你的意思是你想直接使用 GL,那么它仍然是可能的。

基本上每个窗口系统都有 "some place" 您可以在其中进行 GL 调用(在 MakeCurrent 和 SwapBuffers 之间)。只需阅读您的窗口系统的文档。