Библиотека визуализации
Первоначальный выпуск | 7 мая 2007 г |
---|---|
Стабильная версия | 1.0.0
/ 16 мая 2012 г |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | 3D графика |
Лицензия | Упрощенная лицензия BSD |
Веб-сайт | библиотека визуализации |
Библиотека визуализации ( VL ) — это промежуточное программное обеспечение C++ с открытым исходным кодом для приложений 2D/3D графики на основе OpenGL 4, предназначенное для разработки переносимых приложений для Microsoft Windows , Linux и Mac OS X. операционных систем
Цели дизайна
[ редактировать ]Библиотека визуализации была разработана для:
- Реализуйте интуитивно понятную, тонкую и переносимую оболочку C++ для OpenGL 4.
- Быть полностью совместимым со старыми версиями OpenGL (1.x, 2.x и 3.x).
- Используйте возможности и производительность современных графических процессоров также в неигровых приложениях, таких как виртуальная реальность, научная и медицинская визуализация, симуляторы, обучение и т. д.
- Предоставьте общую и детализированную структуру, которую можно использовать для сборки индивидуальных методов рендеринга.
- Избегайте архитектурных ограничений парадигмы графа суперсцены.
- Предоставьте программисту как можно больше контроля, позаботившись о грязных деталях.
Внутренний дизайн
[ редактировать ]Проектирование библиотеки визуализации основано на специализации и разделении алгоритмов и структур данных, в отличие от многих других 3D-фреймворков, входящих в так называемое семейство « графов uber-сцен », то есть тех 3D-движков, которые хранят всю информацию рендеринга в единой иерархической структуре. Таким образом, библиотека визуализации использует разные структуры данных (возможно, иерархические) для управления каждым конкретным доменом конвейера рендеринга.
Например, дерево преобразования хранится в отдельной структуре данных древовидного графа, а часть объектов сцены («Акторы» на языке библиотеки визуализации) может свободно ссылаться на узел дерева преобразования.
Актеры хранятся в их собственной структуре данных разделения сцены, из которой их видимость проверяется на соответствие усеченному виду и из которой в конечном итоге они извлекаются во время рендеринга, чтобы стать частью очереди рендеринга. Это позволяет VL быть независимым и использовать преимущества практически любого типа метода управления сценой, такого как PVS, портал/сектор, KdTree , квадродеревья , октодеревья и т. д.
Шейдеры также представляют собой концепцию, которая не зависит от остальной логики и не требует использования какой-либо иерархической структуры данных Актером. Однако VL предоставляет класс ShaderNode в качестве сервиса высокого уровня, который позволяет пользователю обновлять шейдеры и управлять ими иерархическим способом, используя правила наследования, аналогичные тем, которые обычно доступны в средах на основе графов убер-сцен. Конвейер рендеринга использует аналогичный модульный подход, поэтому можно реализовать настраиваемые методы рендеринга путем сборки и повторного использования компонентов VL.
Основные особенности
[ редактировать ]- Поддержка OpenGL: 1.x, 2.x, 3.x, 4.x.
- Поддержка ОС: Windows XP, Vista, 7, Mac OS, Linux
- Привязки графического интерфейса: Win32, MFC, Qt4, wxWidgets, SDL, GLUT.
- Форматы 3D-файлов: 3DS, OBJ, PLY (двоичный и ascii), STL (двоичный и ascii), AC3D, MD2. Можно подключить больше.
- Поддерживаемые форматы файлов изображений: JPG, PNG, TGA, TIFF, BMP, DDS, DICOM. Можно подключить больше.
- Визуализация объемов: рендеринг объемов raycast (функции передачи, изоповерхности и т. д.), срезы, выровненные по экрану, эффективная реализация марширующих кубов.
- Текстурирование: 1D/2D/3D текстуры, кубические карты, мультитекстурирование, массивы текстур, прямоугольники текстур, рендеринг в текстуру, генерация координат текстуры, объединители текстур, генерация MIP-маппинга и MIP-карт, анизотропная фильтрация, сжатые текстуры, текстуры глубины, целочисленные текстуры, не нормализованные текстуры, текстурные буферы, мультисэмпловые текстуры.
- Поддержка языков шейдинга OpenGL версий 1.x–4.x, включая шейдеры геометрии и тесселяции.
- Автоматическое управление прозрачностью.
- Автоматическая сортировка состояний рендеринга и минимизация настроек.
- Автоматическое управление объектами буфера вершин.
- Обширная поддержка объектов фреймбуфера.
- Предоставленные менеджеры сцен: общее иерархическое дерево томов, KdTree, граф сцены на основе портала.
- Высококачественные функции и классы рендеринга текста в Юникоде и манипулирования текстом.
- Расширенная векторно-матричная библиотека C++ на основе GLSL.
- Функции оптимизации геометрии, уменьшение/прореживание треугольников, удаление двойных вершин и т. д.
- Молекулярная визуализация.
- Генерация экструзии.
- Линейная интерполяция и интерполяция пути Катмулла-Рома.
- Бикубические поверхности Безье.
- Улучшение краев и силуэта.
- Виртуальная файловая система: абстрактная файловая система, которая прозрачно обеспечивает доступ к файлам диска, файлам памяти, файлам .zip и файлам .gz.
- Расширяемая система ресурсов для поддержки новых типов ресурсов и форматов файлов.
- Много документации и много примеров.
Статус разработки
[ редактировать ]Первый публичный выпуск библиотеки визуализации состоялся 7 мая 2007 года.
Библиотека визуализации в настоящее время находится во второй стабильной версии, VL 2011.05.1140, которая следует за первой, VL 2009.07.640. Несмотря на то, что дизайн остался практически прежним, последняя стабильная версия отличается от своей предшественницы главным образом: поддержкой OpenGL 3 и 4 и, в частности, шейдеров тесселяции, универсальными переменными двойной точности, новыми форматами текстур, такими как текстуры с несколькими выборками и текстурные объекты, расширенной поддержкой объектов кадрового буфера и улучшенная настройка для приложений, интенсивно использующих GLSL , а также множество других улучшений.