OpenGL исполнитель
OpenGL Performer , ранее известный как IRIS Performer и обычно называемый просто Performer , представляет собой коммерческую библиотеку служебного кода, построенную на основе OpenGL с целью создания в реальном времени приложений визуального моделирования . OpenGL Performer был разработан SGI . OpenGL Performer доступен для IRIX , Linux и нескольких версий Microsoft Windows . как ANSI C , так и C++ Доступны привязки .
История
[ редактировать ]Performer появился в 1991 году, когда группа из проекта SGI Open Inventor , известного тогда как IRIS Inventor, решила сосредоточиться на производительности, а не на простоте программирования. В то время как Inventor предоставляет простые в использовании объекты и различные элементы пользовательского интерфейса для взаимодействия с ними, Performer сосредоточился на системе графов сцены , которую можно было переупорядочивать на лету из соображений производительности, позволяя выполнять различные этапы задачи рендеринга в параллельно в нескольких потоках . Performer позволил сцене описывать уровни детализации с помощью полос гистерезиса и возможностей затухания. Контролировались частота кадров и статистика, а также рассчитывался фактор «стресса». Это можно использовать для дальнейшего взвешивания уровня детализации сцены, исключая детали для поддержания целевой частоты кадров.
Другими ключевыми особенностями Performer были использование возможностей симметричной многопроцессорной обработки , поддержка нескольких графических конвейеров и возможность использовать масштабируемые ресурсы высокопроизводительных систем. В этом отношении Performer был на самом деле прост в использовании, учитывая его сложность. Отбор и рендеринг приложений могут выполняться в разных потоках, привязанных к разным физическим процессорам. В конфигурации с несколькими конвейерами (несколько графических подсистем) рендеринг для каждого графического канала будет иметь выделенный поток, и аналогичным образом отбраковка также будет иметь выделенный процессор. Расширенные функции, такие как подкачка базы данных, подкачка текстур и управление точечными источниками света (для моделирования полета), а также тестирование пересечений для обнаружения столкновений, также будут иметь выделенные процессоры, обеспечивающие асинхронный ввод-вывод и обработку без негативного влияния на производительность графики. Большая часть этой сложности была скрыта за более простым API графа сцены с вызовами конфигурации относительно высокого уровня, которые можно было выполнить для настройки потоков и межпроцессного взаимодействия.
У Performer не было собственного формата файлов, были только загрузчики плагинов от сторонних производителей, такие как от MultiGen загрузчик формата OpenFlight . Точно так же не было среды выполнения по умолчанию, был пример кода и часто используемый и часто модифицируемый пример приложения «perfly». Вероятно, это способствовало его репутации как сложного в использовании.
К середине 1990-х годов стало ясно, что нет причин, по которым нельзя было бы объединить Inventor и Performer. Это привело к созданию проекта Cosmo 3D , на основе которого SGI намеревалась построить Inventor и Performer (теперь по сути API-прокладки ), а также продвигать его как новый стандартизированный API более высокого уровня для будущей работы на платформе SGI. Однако после первой бета-версии Cosmo 3D компания SGI объединилась с Intel и IBM (а позже и с DEC ) для создания OpenGL++ , по сути, очищенной версии Cosmo. Этот проект умер, когда SGI обратила свое внимание на почти идентичный с Microsoft проект, известный как Fahrenheit , который также был закрыт. Сегодня Inventor и Performer остаются отдельными продуктами, и ни одна из объединенных версий так и не увидела свет.
Функции
[ редактировать ]нижнего уровня Performer состоит в основном из двух библиотек: libpr более высокого уровня и libpf . Библиотека libpr предоставляет объектно-ориентированный интерфейс для функций высокоскоростного рендеринга, основанный на концепции pfGeoSet и pfGeoState . pfGeoSet — это набор графических примитивов, таких как многоугольники или линии. pfGeoState инкапсулирует свойства , относящиеся к данному pfGeoSet, такие как освещение, прозрачность и текстурирование.
Библиотека libpf включает функции для создания и манипулирования иерархическими графами сцен, обработки сцен (моделирование, пересечение, отсечение и задачи рисования), управления уровнем детализации, асинхронной подкачки базы данных, динамических систем координат, моделей окружающей среды, точек освещения, и так далее. Эта библиотека также обеспечивает прозрачную поддержку нескольких окон просмотра, распределенных по нескольким графическим конвейерам.
Другие библиотеки Performer — libpfutil, libpfdb, libpfui и т. д. — предоставляют функции для создания оптимизированной геометрии, преобразования базы данных, ввода данных устройства (например, для взаимодействия с внешними флайбоксами и мультиплексорными шинами MIL-STD-1553 ), моделей движения, моделей столкновений. и независимый от формата интерфейс базы данных, который поддерживает распространенные форматы данных, такие как Open Inventor , OpenFlight , Designer's Workbench , Medit и файл Wavefront .obj .
Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- OpenGL Performer Страница продукта
- Руководство по началу работы с OpenGL Performer
- Руководство программиста OpenGL Performer
- OpenGL Performer Пример кода