WikiDer > OpenGL Performer

OpenGL Performer

OpenGL Performer, ранее известный как IRIS Performer и обычно называют просто Исполнитель, это коммерческая библиотека служебного кода, построенная на основе OpenGL с целью включения жесткий режим реального времени приложения для визуального моделирования. OpenGL Performer был разработан SGI который продолжает поддерживать и улучшать его. OpenGL Performer доступен для IRIX, Linux, и несколько версий Майкрософт Виндоус. Обе ANSI C и C ++ привязки доступны.

История

Исполнитель появился в 1991 году, когда группа из SGI's Открыть Inventor Проект, тогда известный как IRIS Inventor, решил сосредоточиться на производительности, а не на простоте программирования. В то время как Inventor предоставил простые в использовании объекты и различные элементы пользовательского интерфейса для взаимодействия с ними, Performer сосредоточился на граф сцены система, которая может быть перекомпонована на лету по соображениям производительности, позволяя выполнять различные проходы задачи рендеринга параллельно в нескольких потоки. Performer позволил сцене описывать уровни детализации с полосами гистерезиса и возможностями затухания. Отслеживались частота кадров и статистика, а также вычислялся «стресс-фактор». Это можно было бы использовать для дополнительного взвешивания уровня детализации сцены, устраняя детали для поддержания целевой частоты кадров.

Другими ключевыми особенностями Performer были использование возможностей симметричной многопроцессорной обработки, поддержка нескольких графических каналов и способность использовать масштабируемые ресурсы высокопроизводительных систем. В этом отношении Performer был на самом деле простым в использовании, учитывая его сложность. Отбор приложений и рендеринг могут выполняться в разных потоках, заблокированных для разных физических процессоров. В конфигурации с несколькими конвейерами (несколько графических подсистем) рендеринг для каждого графического конвейера будет иметь выделенный поток, и аналогичным образом отбраковка также будет иметь выделенный процессор. Расширенные функции, такие как подкачка базы данных, подкачка текстур и управление точечным источником света (для имитации полета) и проверка перекрестков за обнаружение столкновения также будут выделенные процессоры, позволяющие асинхронный ввод / вывод и обработка должна происходить без отрицательного воздействия на производительность графики. Большая часть этой сложности была скрыта за более простым API графа сцены с относительно высокоуровневыми вызовами конфигурации, которые можно было сделать для настройки потоков и межпроцессного взаимодействия.

У Performer не было собственного формата файла, только загрузчики плагинов от сторонних производителей, например MultiGen's OpenFlight загрузчик формата. Точно так же не было среды выполнения по умолчанию, был образец кода и часто используемый и часто изменяемый образец приложения «perfly». Это, вероятно, способствовало его репутации как сложного в использовании.

К середине 1990-х стало ясно, что нет причин, по которым Inventor и Performer нельзя объединить. Это привело к Космо 3D проект, который SGI намеревался создать как Inventor, так и Performer (теперь по сути Прокладки API) вне, а также продвигать как новый стандартизированный API более высокого уровня для будущей работы на платформе SGI. Однако после первой бета-версии Cosmo 3D SGi присоединилась к Intel и IBM (и позже DEC) создавать OpenGL ++, по сути, очищенная версия Cosmo. Этот проект умер, когда SGI обратила внимание на почти идентичный проект с Microsoft известный как Фаренгейт, который также был убит. Сегодня Inventor и Performer остаются отдельными продуктами, и ни одна из комбинированных версий так и не увидела свет.

Функции

Performer состоит в основном из двух библиотек: нижнего уровня libpr и на более высоком уровне libpf. В libpr библиотека предоставляет объектно-ориентированный интерфейс для высокоскоростных функций рендеринга на основе концепции pfGeoSet и pfGeoState. А pfGeoSet представляет собой набор графических примитивов, таких как многоугольники или линии. А pfGeoState инкапсулирует свойства, относящиеся к данному pfGeoSet, такие как освещение, прозрачность и текстурирование.

В libpf Библиотека включает функции для создания и управления иерархическими графами сцены, обработки сцены (моделирование, пересечение, выборка и задачи рисования), управления уровнем детализации, асинхронной подкачки базы данных, динамических систем координат, моделей среды, световых точек и т. д. на. Эта библиотека также обеспечивает прозрачную поддержку нескольких окон просмотра, распределенных по нескольким графическим конвейерам.

Другие библиотеки Performer -libpfutil, libpfdb, libpfui, и т. д. - предоставляют функции для создания оптимизированной геометрии, преобразования базы данных, ввода данных с устройства (например, для взаимодействия с внешними флайбоксы и MIL-STD-1553 шины мультиплексирования), модели движения, модели столкновений и интерфейс базы данных, не зависящий от формата, который поддерживает общие форматы данных, такие как Открыть Inventor, OpenFlight, Верстак дизайнера, Медитировать, и Волновой фронт.

внешняя ссылка