有没有办法识别我正在操作的OpenGL上下文?

时间:2017-07-01 23:37:00

标签: opengl

当抽象我的游戏/渲染引擎时,我遇到了一个问题,我需要一种方法来可靠地了解我正在操作的上下文。

我正在寻找一种适用于OpenGL规范的解决方案。这是标准的OpenGL,没有提供包装库xyz

3 个答案:

答案 0 :(得分:2)

  

我正在寻找一种适用于OpenGL规范的解决方案

不,必须通过wglGetCurrentContext() / glXGetCurrentContext() / aglGetCurrentContext() /等来升级图层并询问操作系统的窗口系统绑定。

答案 1 :(得分:1)

简短:不,在OpenGL规范中没有办法做到这一点

OpenGL规范并不关心如何创建和管理上下文。 操作系统和/或平台负责此事。

长:如果您控制应用程序,那么您应该能够检测何时切换OpenGL上下文。但如果这不是您想要使用的方式,除此之外没有其他方式......除非您使用不同的设置(如OpenGL版本)设置不同的上下文,或者它们是在分离的线程中运行。同样,第二个不是“OpenGL规范”......只是技巧......

答案 2 :(得分:0)

虽然我无法找到OpenGL 3.3核心配置文件(最常见的版本iirc)的任何内容,但从版本4.3开始可以获得一些东西。

可以使用glDebugMessageCallback设置自定义用户指针,并可以使用glGetPointerv检索该用户指针。

因此,可以滥用用户指针来标记上下文。