Графика 3М (GUI на базе OpenGL)
Модератор: Модераторы
Re: Графика 3М (GUI на базе OpenGL)
Под какую операционку пишется?
Под винды и линукс уже есть ZenGUI http://zengl.org/extra_ru.html.
Я вот хотел бы его переделать под Ultibo .....
Под винды и линукс уже есть ZenGUI http://zengl.org/extra_ru.html.
Я вот хотел бы его переделать под Ultibo .....
Re: Графика 3М (GUI на базе OpenGL)
olegy123 писал(а):Код будет открыт, но пока это в виде экспериментальной вещи, и думаю что мало кому это нужно.. когда сама структура для меня будет понятной - код опубликую с описанием.
Нужен не просто открытый, а такой открытый, который можно статически линковать с закрытыми приложениями и их авторам ничего за это не будет. У исходников fpc и lazarus такая лицензия.
Re: Графика 3М (GUI на базе OpenGL)
Нашел еще один похожий пакет,
https://github.com/bgrabitmap/bgracontrolsfx
только развивается.
Кстати, топикстартер давно не отписывался..
https://github.com/bgrabitmap/bgracontrolsfx
только развивается.
Кстати, топикстартер давно не отписывался..
Re: Графика 3М (GUI на базе OpenGL)
Извините что долго заставил ждать.. но после встречи нового долго приходил в сознание. Был сильный упадок духа. Даже была мысль уйти из профессии.
Заставил двигаться меня заказчик. Да и я тут вам многое наобещал.
Короче это черновик. Это не альфа/ни бета/ни гамма.. это черновик в котором что-то работает, а точнее TGGUIForm.
бинарник. Скомпилирован в Debian x64. Lazarus 1.8.0RC5.
Минимальные требования OpenGL 3.x / Schader #version 130 (Intel).
https://yadi.sk/d/iSXJcsKN3T5Eqs
Идея, все что движется - пересадить в BeginThread.
Стал разбираться в собственном коде, вспоминать что к чему.
Сейчас вспоминаю зачем я стили TGGUIStyle прикрепил к TGRenderInfo. Вот думаю убрать от туда и прикрипить к TGGUIBase или не надо.. Или брать от родителя TGGUIBase.. короче думаю быть или не быть стилям.
Добавлено спустя 6 минут 48 секунд:
В плане:
1) Fonts
2) Style - сделать глобальными или для каждого элемента. К ним добавить Fonts
3) Расширить компоненты до Label/Button/Memo
Добавлено спустя 10 минут 5 секунд:
Далее работа с glStencilMask.
нужно добавить дополнительный слой, для Stencil буфера. Дополнительно отрисовывать с учетом границ для Child компонентов.
Добавлено спустя 4 минуты 1 секунду:
Мультиоконный режим убран(он работал). Но каждый компонент нужно дополнительно крепить(или инициализировать) к окошку(GLControlInfo).
нужно продумать легкий и безопасный способ.
Так что пока в одно окно.
Заставил двигаться меня заказчик. Да и я тут вам многое наобещал.
Короче это черновик. Это не альфа/ни бета/ни гамма.. это черновик в котором что-то работает, а точнее TGGUIForm.
бинарник. Скомпилирован в Debian x64. Lazarus 1.8.0RC5.
Минимальные требования OpenGL 3.x / Schader #version 130 (Intel).
https://yadi.sk/d/iSXJcsKN3T5Eqs
Идея, все что движется - пересадить в BeginThread.
Стал разбираться в собственном коде, вспоминать что к чему.
Сейчас вспоминаю зачем я стили TGGUIStyle прикрепил к TGRenderInfo. Вот думаю убрать от туда и прикрипить к TGGUIBase или не надо.. Или брать от родителя TGGUIBase.. короче думаю быть или не быть стилям.
Добавлено спустя 6 минут 48 секунд:
В плане:
1) Fonts
2) Style - сделать глобальными или для каждого элемента. К ним добавить Fonts
3) Расширить компоненты до Label/Button/Memo
Добавлено спустя 10 минут 5 секунд:
Далее работа с glStencilMask.
нужно добавить дополнительный слой, для Stencil буфера. Дополнительно отрисовывать с учетом границ для Child компонентов.
Добавлено спустя 4 минуты 1 секунду:
Мультиоконный режим убран(он работал). Но каждый компонент нужно дополнительно крепить(или инициализировать) к окошку(GLControlInfo).
unit1.pas
109| p1.JoinRenderParams(GUIDrive.RenderInfo.GLControlInfo);
нужно продумать легкий и безопасный способ.
Так что пока в одно окно.
Re: Графика 3М (GUI на базе OpenGL)
olegy123 писал(а):Мне бы сейчас успеть реализовать базовые элементы (Button,Caption,Edit,CheckBox,Image)
Добавлено спустя 1 минуту 8 секунд:Лекс Айрин писал(а):olegy123 писал(а): и думаю что мало кому это нужно..
Это ты зря. В свете распространения расширенной реальности вписывание компонент/окон в окружение будет очень актуальной.
Да, под это делается задел.
В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
(или как 2D виджеты в 3D ).
Зы
Как только доберусь в своих программах до "др-интерфеса" так сразу попытаюсь применить ваши наработки .
Re: Графика 3М (GUI на базе OpenGL)
кто нибудь знает TFreeTypeFont потокобезопасен? валится приложение, когда активно работаю в разных местах c Fonts. Видимо нужно синхронизировать загрузку шрифтов.
Что то не могу понять как мне "стиль" оформить. Конкретно к чему крепить либо самостоятельный компонент у которого каждый элемент берет информацию либо прикрепленный уже к сделанному элементу.
Что то не могу понять как мне "стиль" оформить. Конкретно к чему крепить либо самостоятельный компонент у которого каждый элемент берет информацию либо прикрепленный уже к сделанному элементу.
не все возможно сделать в 3D. Многие чистые(полностью работающие в 3D) GUI все равно активно используют текстурный фреймбуфер. Так или иначе рисуют на "битмапе". Некоторый 2D функционал еще долго не будет реализован в на ускорителях.Alex2013 писал(а):В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
Re: Графика 3М (GUI на базе OpenGL)
Добавил
GUILabel
GUIButton
GUIEdit
проблемы:
GUIButton пока деревянный - без эмоций. пока думаю как чувства добавить, пока остановился на 3х текстурах: 1) Номрамльная конпка, 2) Мышка наехала, 3) клик.
GUIEdit - тоже пока в придумках как его сделать подвижным. Одно из главных - мигание каретки, как заставить пока не придумал. Либо генерировать 0.5с текст + картека, текст + без картеки. Либо накладывать текстурой и шейдерить миганией текстурой, либо чисто шйедером. Везде есть плюсы и минусы.
Осталось сделать GUICombobox..
GUILabel
GUIButton
GUIEdit
проблемы:
GUIButton пока деревянный - без эмоций. пока думаю как чувства добавить, пока остановился на 3х текстурах: 1) Номрамльная конпка, 2) Мышка наехала, 3) клик.
GUIEdit - тоже пока в придумках как его сделать подвижным. Одно из главных - мигание каретки, как заставить пока не придумал. Либо генерировать 0.5с текст + картека, текст + без картеки. Либо накладывать текстурой и шейдерить миганией текстурой, либо чисто шйедером. Везде есть плюсы и минусы.
Осталось сделать GUICombobox..
Re: Графика 3М (GUI на базе OpenGL)
Добавил кнопку.. Сделал "анимацию".
Добавлено спустя 4 часа 17 минут 57 секунд:
Слайдер.
Добавлено спустя 19 часов 7 минут 5 секунд:
Ну вот и все, перехожу из стадии черновика в реализацию продукта.
Практически все компоненты я научился делать.
Правда хотел воткнуть Combobox, но так как задача имеет множественный подход к решению: можно комбинировать элементы (Edit+Button), можно рисовать на Bitmap-е, можно реализовать слоями.. - имеет много подходов, но тот который я считаю удачным требует доработки базовых элементов. Этот вопрос перенесу в новый код.
сейчас я переключаюсь на работу под Windows. Так как там необходимо мне делать клиента.
Добавлено спустя 4 часа 17 минут 57 секунд:
Слайдер.
Добавлено спустя 19 часов 7 минут 5 секунд:
Ну вот и все, перехожу из стадии черновика в реализацию продукта.
Практически все компоненты я научился делать.
Правда хотел воткнуть Combobox, но так как задача имеет множественный подход к решению: можно комбинировать элементы (Edit+Button), можно рисовать на Bitmap-е, можно реализовать слоями.. - имеет много подходов, но тот который я считаю удачным требует доработки базовых элементов. Этот вопрос перенесу в новый код.
сейчас я переключаюсь на работу под Windows. Так как там необходимо мне делать клиента.
Re: Графика 3М (GUI на базе OpenGL)
Ну все. Появилась свободное время.
Собрал из досок и бревен Laser CNC на ардуино. Нужно для электрических плат.
Друг тоже пилит в гараже детали на китайском эрозионном станке. У него возникло желание собрать свой Wunderwaffe станок.
решили делать на STM32.
Нужно сделать кнопконажималку и с управлением этой STM32.
Короче решил пилить визуальный редактор пока для g-Code (пока g-Code). Разумеется в 3D.
Да,да Zub - также будет многопоточно. Постараюсь сделать продакшин(с возможностью передачи третим лицам). Так что такие дела.
Програ будет работать только под линух. с DX11 у меня не сложилось в рамках конверсии кода(на этом я "устал").
Постараюсь включит перевести на Vulkan, благо Intel включило OpenGL 4.х в Messa.
Собрал из досок и бревен Laser CNC на ардуино. Нужно для электрических плат.
Друг тоже пилит в гараже детали на китайском эрозионном станке. У него возникло желание собрать свой Wunderwaffe станок.
решили делать на STM32.
Нужно сделать кнопконажималку и с управлением этой STM32.
Короче решил пилить визуальный редактор пока для g-Code (пока g-Code). Разумеется в 3D.
Да,да Zub - также будет многопоточно. Постараюсь сделать продакшин(с возможностью передачи третим лицам). Так что такие дела.
Програ будет работать только под линух. с DX11 у меня не сложилось в рамках конверсии кода(на этом я "устал").
Постараюсь включит перевести на Vulkan, благо Intel включило OpenGL 4.х в Messa.
Re: Графика 3М (GUI на базе OpenGL)
скоро новый год, из сознания не падай и духом не уходи))
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: Графика 3М (GUI на базе OpenGL)
В отдельном виде уже есть mse
У которого к тому же есть SDL-форк (гуй, рисуемый средствами библиотеки SDL)
Re: Графика 3М (GUI на базе OpenGL)
Наконец разобрался с Align.
Помогло описание: Autosize / Layout/ru
Стало понятно что должно быть сперва. Но интегрировать не стал, так как 2D и базируется на Ancor, Align сидит в глубине.
Помогло описание: Autosize / Layout/ru
Стало понятно что должно быть сперва. Но интегрировать не стал, так как 2D и базируется на Ancor, Align сидит в глубине.
Re: Графика 3М (GUI на базе OpenGL)
Кстати этот проект жив ? Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
Re: Графика 3М (GUI на базе OpenGL)
Ну как сказать.. он пилился под конкретные цели, вроде цели были взяты. Далее нужно было объяснить одним богатым буратинам почему они должны добровольно отдать нам свои 5 золотых. А ведь хорошо когда только шлифуешь свою тему и еще имеешь от этого гешефт. Эх, не у всех мечты сбываются.Alex2013 писал(а):Кстати этот проект жив ?
Вот приходится сейчас вместо свободными идеями и творчеством заниматься рутиной, которая вымораживает.
Но, есть заинтересованность у одних в некоторых модулях. Не исключено что придется 3D-GUI доделывать.
писал под линух, нужны OpenGL 4.2 минимум. под виндовс не запускал, так как винды не было, а виртуализация не может 3D рисовать. Хотя сейчас у меня есть GVT-g можно, обкатывать в винде.Alex2013 писал(а):Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
Re: Графика 3М (GUI на базе OpenGL)
Я как легко догадался хочу попробовать прикрутить что-то похожее к своему 3D/VR проекту, потому что пока мои идеи касательно условно текстового GUI дальше захвата обычной формы целиком или "рисования букв на текстуре" не продвинулись .

Зы
Кстати как позицировать курсор мыши на "повернутую в 3D" форму ?
У меня есть процедура пересчета экранных координат в мировые (относительно текущего положения камеры )
Но там нужно дополнительно к ней и что-то работающее в обратном порядке (пересчет мировых 3д координат в локальные 2д координаты формы )

Зы
Кстати как позицировать курсор мыши на "повернутую в 3D" форму ?
У меня есть процедура пересчета экранных координат в мировые (относительно текущего положения камеры )
Код: Выделить всё
procedure v2w( vx, vy : integer; var wx, wy, wz : real);
var
viewport : array[0..3] of integer;
modelview : array[0..15] of real;
var x, y, z : real;
projection : array[0..15] of real;
Const
GLdouble: array[0..15] of real=(8.77, 0, 0, 0, 0, 8.77, 0, 0, 0, 1, -1, 0, 0, 0, 0,0);
begin
glGetDoublev(GL_MODELVIEW_MATRIX, @modelview); //get the modelview info
glGetDoublev(GL_PROJECTION_MATRIX, @projection); //get the projection matrix info
glGetIntegerv(GL_VIEWPORT, @viewport); //get the viewport info
if FRender=FR_W then // Экран
begin
gluUnProject(vx, viewport[3]-vy-1, 0,
@modelview, @projection, @viewport, @wx, @wy, @wz);
MS_X:=Wx; MS_y:=Wy; MS_z:=Wz;
end
else // VR режим (Не доработано )
begin
gluUnProject(vx, viewport00[3]-vy-1, 0,
@modelview, @projection, @viewport, @wx, @wy, @wz);
Wx:=WX+abs(MS_X-WX);WY:=WY+MS_Y-WY; Wz:=Wz-abs(Wz-MS_z);
end;
end;
Но там нужно дополнительно к ней и что-то работающее в обратном порядке (пересчет мировых 3д координат в локальные 2д координаты формы )
