Программирование OpenGL внутри программы, уже использующей OpenGL? - PullRequest
0 голосов
/ 18 мая 2009

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

Могу ли я просто настроить свой контекст так, как я хочу, и вытолкнуть / вытолкнуть его из стека, и все должно работать как положено, или ДОЛЖЕН я знать, как моя (вызывающая) программа использует OpenGL, чтобы избежать случайного сбоя?

Кроме того, как бы я мог "инициализировать" OpenGL, когда он уже мог быть инициализирован?

Спасибо за любые советы!

Ответы [ 3 ]

0 голосов
/ 19 мая 2009

Чтобы ответить на ваш первый вопрос, вы, вероятно, можете избежать вызова glPushAttrib (GL_ALL_ATTRIB_BITS) перед вызовом функций программы и вызова glPopAtrib () впоследствии. Обратите внимание, что это может быть медленным, если вы делаете это часто (скажем, каждый кадр в цикле).

Я не уверен, что вы подразумеваете под инициализацией OpenGL. Вы имеете в виду настройку контекста рендеринга? Настройка области просмотра и проекции? Отключение или включение определенных функций? Вы всегда можете проверить, включены ли определенные состояния (используя функции glGet), но все остальное зависит от того, как работает ваша программа и другая программа.

0 голосов
/ 01 июля 2010

Что именно вы хотите сделать с OpenGL? Вы пытаетесь нарисовать в том же окне? Вы хотите нарисовать в собственном окне? Если вы хотите просто нарисовать в своем собственном окне, и тот факт, что существующее приложение использует OpenGL, является просто совпадением, тогда вы, вероятно, можете избежать создания просто нового контекста и игнорирования существующих вещей. Единственный недостаток заключается в том, что вам нужно будет обновлять существующий контекст всякий раз, когда вы завершаете то, что вы делаете, и обновлять свой контекст всякий раз, когда вы хотите что-то с ним сделать. Существующий код не будет нуждаться в обновлении своего собственного контекста, и может привести к случайному включению в ваш контекст, если вы не будете осторожны.

Если вы хотите нарисовать в существующее окно, то ваше использование почти наверняка требует некоторого представления о том, что делает существующий материал.

0 голосов
/ 19 мая 2009

Мне сказали, что теоретически OpenGL должен работать в любом контексте, если впоследствии вы восстановите предыдущий контекст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...