CGL против OpenGL на Mac

Я пытаюсь выяснить отношения между CGL и OpenGL на платформе Mac.

Более конкретно о контексте. Они разделяют контекст? Если да, то как? Пожалуйста, дайте мне ссылку на некоторые связанные примеры.

Если нет, то существуют ли два контекста, работающие в приложениях Core Animation, которые используют OpenGL?

Я очень смущен использованием OpenGL Mac. Может кто-нибудь уточнить?

2 ответа

CGL устанавливает специфичные для устройства контексты, подходящие для рендеринга OpenGL. Сравните с wgl и xgl в Windows и X соответственно. CGL понимает, как запрашивать у графического оборудования его пиксельный формат, а затем как устанавливать и настраивать контекст (например, с двойной буферизацией или с одной буферизацией, какое разрешение по глубине, трафарет, буфер накопления и т. Д.). Но он не предоставляет функции для рисования в этом контексте. После того как вы создали контекст с CGL, вы делаете его текущим, а затем вы можете вызвать OpenGL для рендеринга в этом контексте.

В Core Graphics (не путайте его с CGL) инициализация контекста и отрисовка контекста обрабатываются одной и той же платформой. Но поскольку OpenGL является открытым стандартом и разработан для кроссплатформенности, функциональность рендеринга и контекст устройства были разделены на отдельные структуры.

CGL - это низкоуровневый интерфейс для OpenGL на Mac. Вы, вероятно, не хотите использовать его, если вы пишете приложение для OpenGL Mac. В настоящее время я нахожусь в процессе создания интуитивного шаблона приложения OpenGL Mac для XCode 4, но пока вы можете посмотреть на https://github.com/mk12/Pong-Ultimate, клон понга, который я сделал с помощью OpenGL. Он использует NSOpenGL, высокоуровневый интерфейс Cocoa для OpenGL.

Также вам могут пригодиться документы Apple: http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html.

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