Когда функция CGLGetCurrentContext должна возвращать NULL, а когда - нет?

Я пишу программу с использованием API, который должен получать низкоуровневый контекст OpenGL, но я не могу понять, когда функция CGLGetCurrentContext должен возвращать значение (целое число, представляющее контекст), а когда не должно.

Прямо сейчас функция CGLGetCurrentContext() возвращается NULL, и это нарушает мою программу. Как я могу это исправить?

Какова цель этой функции? Как моделируются контексты OpenGL?

1 ответ

Решение

OpenGL имеет концепцию активного контекста рендеринга, привязанного к рабочему потоку. Так что вы можете рассмотретьCGLGetCurrentContext()как возврат некоторой локальной переменной потока. Ожидается возврат некоторого значения, если:

  • Некоторый код создал контекст OpenGL.
  • Некоторый код активировал контекст OpenGL в текущем рабочем потоке.
  • Ты звонишь CGLGetCurrentContext() в том же рабочем потоке, и предыдущий код не отключал его.

Поскольку вы не указали детали своего кода, я могу счесть, что OpenGL управляется кодом, написанным не вами, поэтому трудно предположить, почему CGLGetCurrentContext() может быть NULL.

Могу только сказать, что мое приложение для macOS использует CGLGetCurrentContext() и он работает как положено.

Другие вопросы по тегам