【问题标题】:When should the function CGLGetCurrentContext return NULL and when it shouldn't?函数 CGLGetCurrentContext 什么时候应该返回 NULL,什么时候不应该?
【发布时间】:2020-07-16 06:35:00
【问题描述】:

我正在使用需要获取 OpenGL 低级上下文的 API 编写程序,但我无法理解函数 CGLGetCurrentContext 何时应返回值(表示上下文的整数),以及何时返回不应该。

现在,函数CGLGetCurrentContext() 正在返回NULL,这破坏了我的程序。我该如何解决这个问题?

这个函数的目的是什么? OpenGL 上下文是如何建模的?

【问题讨论】:

标签: c++ c objective-c macos opengl


【解决方案1】:

OpenGL 有一个绑定到工作线程的活动渲染上下文的概念。这样您就可以将CGLGetCurrentContext() 视为返回一些线程局部变量。如果满足以下条件,则预计会返回一些值:

  • 一些代码创建了一个 OpenGL 上下文。
  • 一些代码在当前工作线程中激活了 OpenGL 上下文。
  • 您在同一个工作线程中调用CGLGetCurrentContext(),之前的代码并没有将其停用。

由于您没有指定代码的详细信息,我可能认为 OpenGL 是由不是您编写的代码管理的,这很难说明为什么 CGLGetCurrentContext() 可能为 NULL。

我只能说我的 macOS 应用程序使用了CGLGetCurrentContext(),它按预期工作。

【讨论】:

  • 我知道我问的问题太含糊了,我以为我只是没有找到任何解释上下文如何工作的文档,但事实证明没有任何广泛的文档。我将针对我的具体问题创建一个后续问题。
猜你喜欢
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2023-04-02
  • 2011-04-15
  • 2017-04-10
  • 2012-03-19
相关资源
最近更新 更多