Введение

Графическое программное обеспечение с открытым исходным кодом OpenSG - это система графических сцен для создания графических программ в реальном времени, например, для приложений виртуальной реальности. Разработан по принципам открытого исходного кода, лицензирован LGPL и может быть использован свободно. Он работает на Windows, Linux, Solaris и OS X и основан на OpenGL. Его основными особенностями являются расширенная поддержка многопоточной и кластерной работы (с ранжированием первой и последней сортировки, среди других методов), хотя он также может быть использован в однопоточных односистемах. Это не часть группы Khronos.

История

Он был запущен, как и многие другие системы, в конце вымирания scenegraph в 1999 году, когда Microsoft и SGI покончили с проектом графического API Fahrenheit. Учитывая, что на рынке и на горизонте не было другой системы графики сцены с функциями, которые хотели авторы, они решили начать свою собственную. OpenSG не следует путать с OpenSceneGraph, который является совершенно другим API графиков сцен, несколько похожим на OpenGL Performer. Разработка обоих началась примерно в одно и то же время, и оба выбрали похожие имена.

Технология

OpenSG - это график сцены, как и многие другие, но с рядом уникальных особенностей, которые отличают его от других. Он имеет систему управления блокированным состоянием для уменьшения накладных расходов на оптимизацию изменения состояния, высоко гибкий переход и другие механизмы, позволяющие обмен времени выполнения и улучшение основных структур данных, но самым необычным аспектом является его многопоточный подход. Сцена графики являются печально известными труднодоступными целями для многопоточного, поскольку они содержат очень большие структуры данных, легко потребляющие сотни мегабайт памяти. Дублирование этих не вариант из-за больших накладных расходов. Многие графики сцены просто блокируют отдельные узлы, чтобы предотвратить повреждение данных из-за параллельных записей, но это только частичное решение. Состояние графика сцены представлено графиком всей сцены, только защита отдельных узлов может привести к непоследовательным результатам (например, при выполнении асинхронного физического моделирования только обновление частей графика приведет к частичным шагам моделирования). OpenSG использует селективный мульти-буферный режим, дублируя небольшие части графа для каждого потока, которые необходимо защитить, при совместном использовании основных данных, таких как массивы вершин и изображения текстуры, и дублируя их только с использованием механизма копирования при записи. Синхронизация изменений для отдельных потоков выполняется с использованием подхода списка изменений, который позволяет минимально увеличить накладные расходы. Этот же механизм позволяет создавать очень гибкие и эффективные кластеры. Для синхронизации приложения, работающего на нескольких машинах, только изменения для каждого кадра отправляются на каждую машину и интегрируются в локальный график сцены. Таким образом, различие между локальными и удаленными изменениями почти невидимо. Приложения, которые хотят работать на кластере, просто должны открыть ClusterWindow, которое может распространять все изменения по кластеру и может очень легко управлять Powerwall или CAVE, не беспокоясь о протоколах распределения и других осложнениях.

Люди

Проект был запущен Дирком Райнерсом, Герритом Воссом и Йоханнесом Бером. Вклад в него внесли многие другие люди, в частности, Карстен Нойман, который в настоящее время является главным администратором.