Войти
ПроектыФорумОцените

NerpaGUI (0.605)

Страницы: 1 2 Следующая »
#0
14:56, 20 янв. 2012

NerpaGUI это библиотека для создания графического пользовательского интерфейса в 3D приложениях. Пока что используется старая( более простая система рендеринга ), изначально проект создавался на основе движка irrlicht, сейчас большая часть алгоритмов перенесено в саму библиотеку, что позволит в скором времени использовать и другие движки. Библиотека поддерживает создание и загрузку собственных элементов управления. Также поддерживается фабрика элементов. Используемые ресурсы редактируются через файлы конфигурации. Обработка событий возможна  через сообщения и через систему сигнал-слот, наподобие QT.

Возможности:
+ Поддержка стилей ( используется css подобный синтаксис для описания внешнего вида и поведения контрола )
+ Помимо заранее опредленных можно описывать свои и назначать их элементам
+ Wrapper'ы для работы с Irrlicht 1.7 и 1.8
+ Сериализация свойств виджета( редактирование\сохранение\загрузка в удобном для пользователя виде )
+ Сохранение\загрузка виджетов из файлов (xml-описание)
+ Поддержка скриптов ( Lua5.1+свойства ), сделана возможность указать lua-обработчик для события элемента
+ Слои отрисовки элементов( размещение контролов на разных слоях отрисовки ) и менеджеры компоновки

Что изменилось:
+ Архитектура виджетов стала похожа на qt'шную, теперь нет абстрактных классов компонентов, от которых все другие должны наследоваться
+ Шрифты могут рендериться в текстуру (как трутайпные так и из картинок)
+ Своя система формирования конечного вида виджета, которая создает текстуру на основе описания стиля( для каждого класса, и даже отдельного контрола может быть задан свой стиль)
+ Изменена схема рендеринга ( сначала идет пререндеринг вне границ кода отрисовки, что значительно снижает время требуемое для отрисовки гуя, потом собственно сам рендеринг виджетов, затем событие пострендера... наверное там чтото тоже можно делать )
+ Переработаны алгоритмы сигналов\слотов - теперь можно подключать статические функции, да и сами алгоритмы стали использовать только внутренние типы данных
+ Библиотека независима от кода сторонних библиотек, есть несколько классов, переписав реализации которых можно будет использовать библиотеку для любого движка
+ Библиотека работоспособна на Linux\Windows платформах
+ Проекты для MSVS 2008, QtCreator, Code::Blocks

Минусы:
- Не до конца определились с архитектурой основного класса отрисовки и среды
- Много старого кода
- Мало виджетов переведено на новую систему рендеринга

Доступные виджеты
- Button(Кнопка)
- Label(Надпись)
- CheckBox(Флажок)
- RadioButton
- TabControl(закладки)
- Window(Форма)
- ListBox (список)
- ScrollBar

Скрины:
Пока немного.
Win7
ИзображениеИзображение
Ubuntu12
ИзображениеИзображениеИзображение

Где можно посмотреть сырую версию...
SVNhttp://svn.code.sf.net/p/nerpagui/code/trunk

Архивhttp://sourceforge.net/projects/nerpagui/files/Nerpa.GUI%280.6%29/nerpagui-ver.605-(msvs2008).exe/download

Заранее благодарен за вашу критику, идеи и пожелания.


#1
15:34, 20 янв. 2012

Прикольно, когда заново попытаюсь на Irrlicht'e че-нить наклепать, попробую)

P.S. Прочитал название как НеграGUI

#2
16:01, 20 янв. 2012

собственно пытаемся уйти от работы с конкретным движком, благо примеров достаточно ( OpenGUI, MyGUI, CeGUI и др )... большая часть кода зависит только от хедеров иррлихта, что решаемо переводом на свои...

#3
18:11, 20 янв. 2012

Байкальская нерпа (для тех, кто слышит слово "нерпа" впервые):

Изображение

dalerank
Уважуха, попробую подпилить к своему недодвижку. =) Давно искал либы для работы с гуи.

#4
18:19, 20 янв. 2012

Качество исполнения не кокосовое

#5
0:17, 21 янв. 2012

Согласен, многие части системы требуют доработки... к данной версии ставили целью сделать минимальные зависимости от других библиотек... иррлихт быд выбран как стартовый двиг изза свой простоты и возможности непосредственно обращаться к железному API для тестирования разных режимов работы... к лету планируется дописать врпер для огра... враперы для опенгл и дх написаны на 80%

#6
13:36, 21 янв. 2012

Интересует как сделана часть, связывающая рендер библиотеки в движке.

Вкратце, если можно. Исходный код смотреть пока нет желания.

#7
16:56, 21 янв. 2012

Началось все с того что гуи понадобился для комерческого проекта( не игра ). Сначала пытались использовать существующие разработки (mygui u opengui ), но както не сложилось. Потом мтали изобретать свои алгоритмы для отрисовки контролов, в частности пробовали адаптировать батчинг из mygui... Поджимали сроки сдачи демки, художник наткнулся на использовании скинов для гуи ирлихта, после доводки и переносе большей части функций в библиотеку оказалось что от движка для начала работы нужны две функции:
1. Функция загрузки текстур
2. Функция отрисовки спрайта
Есесно для обработки действий пользователя надо чтобы в систему гуи передавалист текущие координаты курсора и нажатия кнопок мыши и клавиатуры.

Чтобы обеспечить переносимость, эти функции вынесены в интерфейсный класс. Библиотеке передается указатель на класс реализующий эти функции.

Планируется перенос функций загрузки текстур в библиотеку в будущих релизах.
Я ответил на вопрос??? или нужен более детальный ответ???

#8
17:31, 21 янв. 2012

НеграГУИ? Хорошее название.

#9
20:58, 5 апр. 2012

Закончено изменение кода библиотеки. Теперь библиотека не зависит от других. Работоспособность проверена на Irrlicht и Ogre( Windows\Linux )
Для Irrlicht и Ogre сделаны врапперы, которые обеспечивают работу на этих движках. Работа с конкретным движком сводится к написанию 6 классов, обеспечивающих совместимость.

#10
22:54, 5 апр. 2012

Прикольно, у меня только один вопрос: есть ли возможность сделать PropertyGrid (в смысле, не чтобы пользователи написали, а чтобы в библиотеке было) ?  Без издевательств, при условии, конечно же, что есть (не)человеческий reflection.

#11
23:23, 5 апр. 2012

dalerank
У меня давно есть идея поковырять блендер - там гуй полностью руками написан. Кажется, на opengl. Может быть, вам эта информация тоже будет полезна.

#12
9:29, 6 апр. 2012

to Vinil: что понимается под PropertyGrid??? если свойства и их сериализация, то это уже есть... просто не до конца отлажено еще, поэтому пока не выкладываем...
to Fynivx: собственно библиотека пишется с оглядкой на такие проекты как CEgui, MyGUI, etc.. blender пока не смотрели, пасиб за наводку)))

#13
12:14, 6 апр. 2012

нормальное качество исполнение, видно вляние иррлихта и qt, код - однородный и читабельный, было проделано много работы.
т.е. можно написать хоть D3D11 реализацию для AbstractPainter?
автору респект и удачи в дальнейшей разработке!

#14
12:38, 6 апр. 2012

to PVSector: вполне реализуемо... наследник AbstractPainter должен реализовать некоторые функции по отрисовке( примитивы, текстуры ) и загрузке данных, я не замахивался на трехмерное исполнение гуя, так что все очень просто получилось...
для подключения нерпы к другой системе отрисовки надо написать реализацию классов курсора, текстуры и отрисовщика.
к сожалению за простоту подключения приходится платить тем, что основные функции(загрузка данных, отслеживание движений мыши) должен выполнять всетаки движок.

P.S. для того же Irrlicht'а уже есть законченная реализация драйвера для DX10 (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=6&t=385… =dx11#p265411)

Страницы: 1 2 Следующая »
ПроектыФорумОцените

Тема в архиве.