Когда функция CGLGetCurrentContext должна возвращать NULL, а когда - нет?
Я пишу программу с использованием API, который должен получать низкоуровневый контекст OpenGL, но я не могу понять, когда функция CGLGetCurrentContext
должен возвращать значение (целое число, представляющее контекст), а когда не должно.
Прямо сейчас функция CGLGetCurrentContext()
возвращается NULL
, и это нарушает мою программу. Как я могу это исправить?
Какова цель этой функции? Как моделируются контексты OpenGL?
1 ответ
OpenGL имеет концепцию активного контекста рендеринга, привязанного к рабочему потоку. Так что вы можете рассмотретьCGLGetCurrentContext()
как возврат некоторой локальной переменной потока. Ожидается возврат некоторого значения, если:
- Некоторый код создал контекст OpenGL.
- Некоторый код активировал контекст OpenGL в текущем рабочем потоке.
- Ты звонишь
CGLGetCurrentContext()
в том же рабочем потоке, и предыдущий код не отключал его.
Поскольку вы не указали детали своего кода, я могу счесть, что OpenGL управляется кодом, написанным не вами, поэтому трудно предположить, почему CGLGetCurrentContext()
может быть NULL.
Могу только сказать, что мое приложение для macOS использует CGLGetCurrentContext()
и он работает как положено.