OpenGL ++ - OpenGL++

OpenGL ++ был графическая библиотека написано в C ++ что поддержало объектно-ориентированный структуры данных поверх OpenGL Система трехмерной графики. Проект стартовал в результате партнерства между SGI, IBM и Intel, и позже, Корпорация цифрового оборудования. Он был призван обеспечить более высокий уровень API чем "голая" поддержка OpenGL, а также реализация для Java3D.[1] Работа над OpenGL ++ закончилась, когда SGI решила сотрудничать с Microsoft вместо этого, приводя к Фаренгейт проект, который тоже умер.

Фон

Подавляющее большинство приложений, использующих 3D-системы, описывают объекты своего «мира» в структура данных известный как граф сцены. Граф сцены обычно организован как своего рода древовидная структура данных, где узлы представляют объекты, а края - их отношения с другими объектами в мире. Например, стол может быть представлен одним объектом «стол» с несколькими краями, соединяющими его части вместе, столешницу, ножки и т. Д.

Ключ к высокой производительности в 3D-приложениях - это решение, какие объекты в мире действительно видны с учетом текущего положения и направления камеры. Например, необязательно рисовать объекты за камерой. Быстрый обход графа сцены важен для быстрого выполнения этой операции "отсечения".

Графики сцен обычно предоставлялись разработчику для реализации, и слишком часто можно было увидеть плохие примеры, приводящие к низкой производительности. SGI работала над рядом проектов, которые были призваны помочь разработчику создать высококачественный граф сцены, но ни один из них не получил широкого распространения по разным причинам. Открыть Inventor был одним из таких примеров и предназначался для упрощения построения графа сцены, но результаты не обязательно были очень высокими. OpenGL Performer был похожим проектом, который был предназначен для создания высокоскоростных сцен и поддержки очень большого количества объектов в «мире», но не был особенно простым в использовании.[2]

Cosmo3D

Команды изобретателей и исполнителей уже поняли, что нет никаких особых причин, по которым две системы нельзя было объединить в одну, предлагая одновременно простоту разработки и высокую производительность. Это привело к Cosmo3D Система, по сути, стандартизованный высокопроизводительный граф сцены, расположенный поверх OpenGL. Cosmo3D представила новый формат файла который можно использовать для хранения целых сцен и всех данных, необходимых для их восстановления, VRML формат, который все еще используется.[2]

SGI произвела ряд продуктов, в которых использовалась Cosmo3D. Среди них были различные инструменты VRML и система визуализации больших моделей для CAD целей называется OpenGL Optimizer. Как ни странно, Cosmo Code, инструмент для разработки VRML, был создан другим подразделением и вообще не использовал граф сцены Cosmo.

Граф сцены Cosmo ни в коем случае не был уникальным решением в то время, и ряд других графических компаний работали над аналогичными идеями примерно в то время.

OpenGL ++

На заседании 20–21 августа 1996 г. Совет по обзору архитектуры OpenGL (ARB) SGI выдвинула идею нового стандартизованного графа сцены, аналогичного Cosmo3D, но с явным намерением основываться на «стандартном» OpenGL. Концепция вызвала некоторый интерес, поэтому на встрече 9–10 декабря 1996 г. группа представила первый проект концепции OpenGL ++.[2] Последующая встреча 17–19 февраля 1997 г. продемонстрировала значительный интерес со стороны большинства сторон, за исключением Microsoft и Sun, хотя высказывались опасения относительно того, является ли ARB подходящим органом для поддержки таких усилий без ослабление их основной работы по поддержке OpenGL.[3] Разработка продолжалась в течение 1997 года, включая несколько дистрибутивов API. Однако АРБ отмечает, что «работы было много, но связи относительно мало».[4]

Пока продолжалась работа над OpenGL ++, Sun и SGI также работали над стандартом 3D, подходящим для Java. Эти усилия в конечном итоге потерпели неудачу, и Sun продолжила выпуск Java3D. SGI предположила, что их работа в Cosmo была образцом реализации Java3D, и по мере того, как эта работа развивалась в OpenGL ++, эти планы перемещались вместе с ней. Во время определения OpenGL ++ Sun заявила, что они не заинтересованы в работе над этим усилием, поскольку они были сосредоточены на своей работе над Java3D.[2] Для сравнения, Java3D охватывает два уровня трехмерного стека, граф сцены и визуальный интерфейс и его виджеты.

К концу 1997 года SGI, похоже, полностью посвятила себя OGL ++. Они заявили, что существующая работа с Cosmo будет прекращена и что Open Inventor, Performer и OpenGL Optimizer будут переписаны для размещения поверх OGL ++. Поскольку OGL ++ задумывался как очищенная и более гибкая версия Cosmo3D, большая часть команды Cosmo3D начала работу над OGL ++, и большая часть усилий была направлена ​​на спецификацию и реализацию, которые могли бы обеспечить обещание действительно мощного, но универсального граф сцены.[5][6]

В конце

На собрании ARB в марте 1998 года, к всеобщему удивлению, SGI представила Fahrenheit, совершенно новый проект. ARB отмечает на этой встрече: «SGI чувствовала важность совместной работы с Microsoft, которая не двигалась в совместимых направлениях, чтобы иметь возможность создавать продукты с добавленной стоимостью в среде Windows. Фаренгейт - большой шаг в этом направлении. . "[2] OpenGL ++ был заброшен.

Похоже, что проект стал жертвой смещения приоритетов SGI в этот период, изменения направлений деятельности в целях сотрудничества с более крупными компаниями. Когда эти компании вышли из 3D-пространства, чтобы сосредоточиться на других нишах продуктов, SGI осталась единственной сторонницей проекта, чего они и пытались избежать. В конце концов, единственной компанией, специализирующейся на 3D, была Microsoft, и Фаренгейт проект начался и закончился вскоре после усилий OpenGL ++.

Сегодня такого стандартизированного графа сцены не существует, и SGI почти вышла из мира API. SGI выпустила предыдущий код Open Inventor в Открытый исходный код, но исходный код OGL ++ так и не был завершен в удовлетворительной степени. Никакой окончательной спецификации не существует, и, как и в случае с OpenGL, именно спецификация и идея, лежащие в основе такой открытой платформы, придали бы ей непреходящую ценность, а не единственная реализация идеи графа сцены.

Рекомендации

дальнейшее чтение