我可以编写 OpenGL 应用程序而不将其绑定到某个窗口库吗?
Can I write an OpenGL application without binding it to a certain windowing library?
正如我之前在一个问题中提到的,我正在尝试用 OpenGL
在 C++
中制作一个简单的游戏引擎。
我目前正在使用 GLFW
来绘制 OpenGL
上下文,我之所以选择它是因为我听说它是最快的方法之一。但是,它不支持小部件,我真的不想自己写。所以我决定稍微了解一下 Qt,因为它可以让我拥有一个用于渲染上下文的窗格和不同的便利栏,以及用于编辑世界地图、设置 OpenGL
规则等的所有奇特元素。
不过,我想在该游戏的导出版本上使用 GLFW
。 如果没有某种抽象层,这可能吗?
提前致谢! :)
是的,这绝对是可能的,事实上我正在编写一个 3D 引擎,它不与任何窗口库耦合,可以与 Qt、SDL 或其他任何东西一起使用。
您当然只需将常规 GL 调用包装到更高级别的层中,这要求您不要在 GL 代码中调用 "SwapBuffers"。
如果您所说的抽象层是指 "inversion of control",那么您不想重写 "Render/Update" 方法,这正是我所做的。如果 "abstraction layer" 你的意思是你想直接使用 GL,那么它仍然是可能的。
基本上每个窗口系统都有 "some place" 您可以在其中进行 GL 调用(在 MakeCurrent 和 SwapBuffers 之间)。只需阅读您的窗口系统的文档。
正如我之前在一个问题中提到的,我正在尝试用 OpenGL
在 C++
中制作一个简单的游戏引擎。
我目前正在使用 GLFW
来绘制 OpenGL
上下文,我之所以选择它是因为我听说它是最快的方法之一。但是,它不支持小部件,我真的不想自己写。所以我决定稍微了解一下 Qt,因为它可以让我拥有一个用于渲染上下文的窗格和不同的便利栏,以及用于编辑世界地图、设置 OpenGL
规则等的所有奇特元素。
不过,我想在该游戏的导出版本上使用 GLFW
。 如果没有某种抽象层,这可能吗?
提前致谢! :)
是的,这绝对是可能的,事实上我正在编写一个 3D 引擎,它不与任何窗口库耦合,可以与 Qt、SDL 或其他任何东西一起使用。
您当然只需将常规 GL 调用包装到更高级别的层中,这要求您不要在 GL 代码中调用 "SwapBuffers"。
如果您所说的抽象层是指 "inversion of control",那么您不想重写 "Render/Update" 方法,这正是我所做的。如果 "abstraction layer" 你的意思是你想直接使用 GL,那么它仍然是可能的。
基本上每个窗口系统都有 "some place" 您可以在其中进行 GL 调用(在 MakeCurrent 和 SwapBuffers 之间)。只需阅读您的窗口系统的文档。