WikiDer > OpenSG
Написано в | C ++ |
---|---|
Операционная система | Windows, Linux, Солярис, OS X |
Тип | График сцены |
Лицензия | LGPL |
Интернет сайт | Sourceforge |
OpenSG это граф сцены система для создания графических программ в реальном времени, например для приложений виртуальной реальности. Он разработан в соответствии с принципами открытого исходного кода, LGPL лицензированы и могут использоваться бесплатно. Он работает на Windows, Linux, Солярис и OS X и основан на OpenGL.
Его основные функции расширены многопоточность и кластеризация поддержка (с сортировка в первую очередь и сортировка-последняя рендеринг, среди других методов), хотя он также отлично подходит для однопоточного односистемного приложения.
Это не часть Хронос Групп.
История
Он был запущен, как и многие другие системы, в конце исчезновения графов сцен в 1999 году, когда Microsoft и SGIс Графический API по Фаренгейту проект умер. Учитывая, что на рынке и на горизонте не было другой системы графа сцены с функциями, которые хотели авторы, они решили создать свою собственную.
OpenSG не следует путать с OpenSceneGraph который является совершенно другим API графа сцены, чем-то похожим на OpenGL Performer. Разработка обоих началась примерно в одно время, и оба выбрали похожие имена.
Технологии
OpenSG - это граф сцены как и многие другие, но с рядом уникальных функций, которые отличают его от других. Он имеет систему управления заблокированным состоянием для уменьшения накладных расходов на оптимизацию изменения состояния, очень гибкий обход и другие механизмы, позволяющие осуществлять обмен во время выполнения и улучшать основные структуры данных, но наиболее необычным аспектом является многопоточность.[1]
Графы сцен являются общеизвестно жесткими целями для многопоточности, поскольку они содержат очень большие структуры данных, легко потребляющие сотни мегабайт памяти. Их дублирование невозможно из-за больших накладных расходов. Многие графы сцены просто блокируют отдельные узлы, чтобы предотвратить повреждение данных из-за параллельной записи, но это лишь частичное решение. Состояние графа сцены представлено всем графом сцены, только защита отдельных узлов может привести к противоречивым результатам (например, при запуске симуляции асинхронной физики только обновление частей графа приведет к отображению частичных шагов симуляции). OpenSG использует выборочную мультибуферизацию, дублируя небольшие части графа для каждого потока, который необходимо защитить, при совместном использовании массивов данных, таких как массивы вершин и изображения текстур, и дублирует их только с помощью механизма копирования при записи. Синхронизация изменений для отдельных потоков выполняется с использованием подхода со списком изменений, который позволяет минимизировать накладные расходы.
Тот же механизм также обеспечивает очень гибкую и эффективную кластеризацию. Чтобы синхронизировать приложение, работающее на нескольких машинах, только изменения для каждого кадра отправляются на каждую машину и интегрируются в локальный граф сцены. Таким образом, почти незаметно различие между локальными и удаленными изменениями. Приложение, которое хочет работать в кластере, просто должно открыть ClusterWindow, который может распределять все изменения по кластеру и может очень легко управлять Powerwall или ПЕЩЕРА не беспокоясь о протоколах распространения и других сложностях.
Люди
Проект был запущен Дирк Райнерс, Геррит Восс и Йоханнес Бер. в него внесли вклад многие другие люди, в первую очередь Карстен Нойман, который в настоящее время выполняет функции основного сопровождающего.
Рекомендации
- ^ Voß, G .; Behr, J .; Reiners, D .; Рот, М. (01.01.2002). «Многопоточная безопасная основа для графов сцен и их расширение на кластеры». Материалы Четвертого семинара Eurographics по параллельной графике и визуализации. EGPGV '02. Эре-ла-Виль, Швейцария, Швейцария: Еврографическая ассоциация: 33–37. Дои:10.1145/569673.569679 (неактивно 01.09.2020). ISBN 1-58113-579-3.CS1 maint: DOI неактивен по состоянию на сентябрь 2020 г. (связь)