О OpenGL для OS X
OpenGL является открытым, межплатформенным графическим стандартом с широкой отраслевой поддержкой. OpenGL значительно упрощает задачу записи 2D или 3D графических приложений в реальном времени путем обеспечения старого, хорошо задокументированного конвейера обработки графики, поддерживающего абстракцию текущих и будущих аппаратных акселераторов.
Сразу
OpenGL является отличным выбором для графической разработки на платформе Macintosh, потому что это предлагает следующие преимущества:
Надежная Реализация. Аппаратные средства кратких обзоров клиент-серверной модели OpenGL детализируют и гарантируют непротиворечивое представление любой совместимой аппаратной и программной конфигурации. Каждая реализация OpenGL придерживается спецификации OpenGL и должна пройти ряд тестов соответствия.
Производительность. Приложения могут использовать значительное питание аппаратного обеспечения машинной графики улучшить скорости рендеринга и качество.
Отраслевое принятие. Спецификацией для OpenGL управляет Khronos Group, отраслевой консорциум, элементы которого включают многие крупнейшие компании в отрасли компьютерной графики, включая Apple. В дополнение к OpenGL для OS X существуют реализации OpenGL для Windows, Linux, Irix, Соляриса и многих игровых приставок.
OpenGL является независимый от платформы API на базе С
Поскольку OpenGL является API на базе С, это чрезвычайно переносимо и широко поддерживается. Как API C, это интегрируется беспрепятственно с базируемыми приложениями Какао Objective C. OpenGL обеспечивает функции Ваше использование приложения для генерации 2D или 3D изображений. Ваше приложение представляет представленные изображения экрану или копирует их назад в его собственную память.
Спецификация OpenGL не обеспечивает собственный уровень работы с окнами. Это полагается на функции, определяемые OS X для интеграции получения OpenGL с системой управления окнами. Ваше приложение создает OS X контекст рендеринга OpenGL и присоединяет цель рендеринга к нему (известный как drawable объект). Контекст рендеринга управляет изменения состояния OpenGL и объекты, создаваемые вызовами к OpenGL API. drawable объект является конечным местом назначения для команд рисования OpenGL и обычно связывается с окном Cocoa или представлением.
Различные места назначения рендеринга требуют различных команд установки
В зависимости от того, намеревается ли Ваше приложение нарисовать содержание OpenGL к окну, нарисовать на весь экран или выполнить внеэкранную обработку изображений, это предпринимает различные шаги, чтобы создать контекст рендеринга и связать его с drawable объектом.
OpenGL на Macs существует в неоднородной среде
Macs поддерживают различные типы графических процессоров, каждого с различными возможностями рендеринга, поддерживая версии OpenGL от 1.x до OpenGL 3.2. При создании контекста рендеринга приложение может принять широкий диапазон средств рендеринга, или оно может ограничить себя устройствами с определенными возможностями. Как только у Вас есть контекст, можно сконфигурировать, как тот контекст выполняет команды OpenGL.
OpenGL на Mac не является только неоднородной средой, но и это - также динамическая среда. Пользователи могут добавить или демонтировать дисплеи, или взять ноутбук, работающий на заряде батареи, и включить его в стену. Когда может измениться графическая среда на изменениях Mac, средство рендеринга, связанное с контекстом. Ваше приложение должно обработать эти изменения и корректироваться, как оно использует OpenGL.
OpenGL помогает приложениям использовать питание графических процессоров
Графические процессоры являются в широком масштабе параллелизированными устройствами, оптимизированными для графических операций. Получить доступ к той вычислительной мощности добавляет дополнительные издержки, потому что данные должны переместиться от Вашего приложения до GPU по более медленным внутренним шинам. Доступ к тем же данным одновременно и из Вашего приложения и из OpenGL обычно ограничивается. Для получения высокой эффективности в приложении необходимо тщательно разработать приложение для питания данных и команд к OpenGL так, чтобы аппаратное обеспечение машинной графики работало параллельно с приложением. Плохо настроенное приложение может остановиться или на CPU или на GPU, ожидающем другого, чтобы закончить обрабатывать.
Когда Вы готовы оптимизировать производительность своего приложения, Apple обеспечивает и и специфичные для OpenGL профильные инструменты общего назначения, упрощающие изучать, где Ваше приложение проводит свое время.
Параллелизм в приложениях OpenGL требует дополнительного усилия
Много поставок Macs с многократными процессорами или многократными ядрами и будущими аппаратными средствами, как ожидают, добавят больше из каждого. Разработка приложений для использования в своих интересах многопроцессорной обработки критически важна. OpenGL устанавливает дополнительные ограничения для многопоточных приложений. Если Вы намереваетесь добавить параллелизм к приложению OpenGL, необходимо гарантировать, что приложение не получает доступ к тому же контексту от двух различных потоков одновременно.
Настройка производительности позволяет Вашему приложению обеспечивать исключительный пользовательский опыт
Как только Вы улучшили производительность своего приложения OpenGL и использовали в своих интересах параллелизм, поместили часть освобожденной вычислительной мощности для работы на Вас. Более высокие текстуры разрешения, подробные модели, и более сложное освещение и штриховка алгоритмов могут улучшить качество изображения. Полная сцена, сглаживающаяся на современном аппаратном обеспечении машинной графики, может устранить многие «неровности», распространенные на более низких изображениях разрешения.
Как использовать этот документ
Если Вы никогда не программировали в OpenGL на Mac, необходимо считать эту книгу полностью, начиная с OpenGL на Платформе Mac. Критическая терминология Mac определяется в той главе, а также в Глоссарии.
Если Вы уже имеете приложение OpenGL, работающее на Mac, но еще не обновили его для OS X v10.7, считайте Renderer Выбора и Buffer Attributes, чтобы изучить, как выбрать профиль OpenGL для Вашего приложения.
Чтобы узнать, как обновить существующее приложение OpenGL для высокого разрешения, посмотрите Оптимизацию OpenGL для Высокого разрешения.
Как только у Вас есть содержание OpenGL в Вашем приложении, считайте Стратегии Проектирования приложений OpenGL изучить фундаментальные образцы для реализации высокоэффективных приложений OpenGL и глав, следующих, чтобы изучить, как применить те образцы к определенным проблемам OpenGL.
Предпосылки
Это руководство предполагает, что Вы имеете некоторый опыт с программированием OpenGL, но хотите изучить, как применить те знания для создания программного обеспечения для Mac. Несмотря на то, что это руководство предоставляет консультацию при оптимизации кода OpenGL, это не предоставляет информацию начального уровня о том, как использовать OpenGL API. Если Вы незнакомы с OpenGL, необходимо считать OpenGL на Платформе Mac, чтобы получить обзор OpenGL на платформе Mac, и затем считать следующее руководство по программированию OpenGL и справочные документы:
Руководство по программированию OpenGL, Дэйвом Шрейнером и Рабочей группой OpenGL Khronos; иначе известный как «Красная книга”.
Язык Штриховки OpenGL, Рэнди J. Rost, превосходное руководство для тех, кто хочет записать программы, вычисляющие поверхностные свойства (также известный как программы построения теней).
Прежде, чем считать этот документ, необходимо быть знакомы с окнами Cocoa и представлениями, как представлено в Руководстве по программированию Руководства по программированию и Представления Окна.
См. также
Сохраните эти справочные документы удобными, поскольку Вы разрабатываете свою программу OpenGL для OS X:
Ссылка класса NSOpenGLView, Ссылка класса NSOpenGLContext, Ссылка класса NSOpenGLPixelBuffer и Ссылка класса NSOpenGLPixelFormat предоставляют полное описание классов, и методы должны были интегрировать содержание OpenGL в приложение Какао.
Ссылка CGL описывает низкоуровневые функции, которые могут использоваться для создавания полноэкранных приложений OpenGL.
Руководство по Расширениям OpenGL предоставляет информацию о расширениях OpenGL, поддерживаемых в OS X.
Веб-сайт Основы OpenGL, http://www .opengl.org, предоставляет информацию о командах OpenGL, Рабочей группе OpenGL Khronos, требованиях логотипа, новостях OpenGL и многих других темах. Это - сайт, который Вы захотите посетить регулярно. Среди многих ресурсов это обеспечивает, следующее важные справочные документы для разработчиков OpenGL:
Спецификация OpenGL предоставляет подробную информацию о том, как реализация OpenGL, как ожидают, обработает каждую команду OpenGL.
Ссылка OpenGL описывает основную библиотеку OpenGL.
Ссылка GLU OpenGL описывает Библиотеку Утилиты OpenGL, содержащую функции удобства, реализованные поверх OpenGL API.
OpenGL Ссылка GLUT описывает Инструментарий Утилиты OpenGL, межплатформенная работа с окнами API.
OpenGL Код API и Учебные Списки обеспечивает примеры кода для фундаментальных задач, таких как моделирование и отображение текстур, а также для усовершенствованных методов, таких как рендеринг расширенного динамического диапазона (HDRR).