OpenGL - API 设计

OpenGL - API design

我一直在研究基于 opengl 的新渲染引擎,我 运行 遇到以下问题:我想公开 opengl 功能,例如 glClear(); glUniformxx, ... 但我需要用户在调用任何这些函数之前创建一个 opengl 上下文。问题是 opengl 不会为您管理上下文 ,并且在导致未定义行为之前调用任何 gl 函数(大多数情况下 segfault) .所以我的问题是 我应该如何在任何 openGL 函数调用之前创建上下文?

完全基于意见

我建议为 OpenGL 上下文管理编写一个完全不同的 class,这样您就可以在它们之间切换以进行多 window 渲染。您的 "GLFeatures" class 可以有一个名为 "SetCurrentContext" 的函数,它设置一个指向上下文管理 class 的指针。您仍然可以通过在每个函数的开头断言上下文指针来防止在初始化上下文之前调用所有函数。

但是,仅使用单例来完成所有这些也应该可以,以上就是我的做法。