CGL против AGL против OpenGL против NSOpenGL против CoreAnimation (CALayer) - PullRequest
3 голосов
/ 31 января 2012

Я пытаюсь понять кое-что на Mac, связанное с интеграцией платформы OpenGL в форме слоев. Ну, в основном, когда я хочу понять 3D-технологии, представленные в OS X, и какой уровень является фактическим уровнем внедрения OpenGL.

Из прочтения Apple Docs ниже я понял следующее:

1.NSOpenGLContext объект оборачивает низкоуровневый зависящий от платформы базовый контекст OpenGL (CGL).

= Это дает понять, что NSOpenGL использует CGL.

2. API AGL (Apple Graphics Library) является частью реализации Apple OpenGL в Mac OS X.

= Итак, связаны ли AGL и CGL каким-либо образом?

3.CGL (Core OpenGL) - это программный интерфейс самого низкого уровня для реализации Apple OpenGL.

= Означает ли это, что стандартные API OpenGL являются просто оболочкой над CGL?

4.CoreAnimation выглядит как комбинация Core Graphics, Open-GL и Quick-time. Но я не уверен, что он использует под ним, я имею в виду фактический уровень реализации, это опять CGL?

Вещи мне не совсем понятны. Я все еще читаю, и я задал несколько связанный вопрос 1020 * в прошлом, но с неполным знанием.

Я был бы очень признателен, если бы кто-то мог поделиться своим пониманием вопроса.

1 Ответ

7 голосов
/ 31 января 2012

NSOpenGLContext, AGL и CGL - это API-интерфейсы для настройки контекста OpenGL, в который вы можете рисовать.

Используйте NSOpenGLContext, если вы уже не знаете, почему у вас нет причин.

Используйте AGL, если вы пишете приложение Carbon или вам нужна совместимость с Mac OS 9 (по состоянию на 2012 год это означает: нет).

И AGL, и NSOpenGLContext реализованы поверх CGL. Однако не все необходимые части CGL на самом деле являются открытыми API. В прошлый раз я проверил единственные открытые части CGL API, где есть те, которые позволяют вам создавать полноэкранный контекст OpenGL. Если вы хотите использовать OpenGL в окне или хотите отображать диалоговые окна или некоторые NSView поверх вашего OpenGL, вы, вероятно, не сможете использовать CGL.

CoreAnimation - это фреймворк для (в основном, пользовательского интерфейса) анимации; Вы можете использовать CoreAnimation без использования OpenGL напрямую. Я никогда не использовал его сам, но я предполагаю, что он также позволяет вам создавать контекст OpenGL для слоя анимации. Используйте его, если у вас уже есть другие причины использовать CoreAnimation или если вы хотите творчески комбинировать графические элементы OpenGL и графические элементы Mac.

...