Графика 3М (GUI на базе OpenGL)

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Графика 3М (GUI на базе OpenGL)

Сообщение MiniQ » 27.12.2017 21:44:15

Под какую операционку пишется?
Под винды и линукс уже есть ZenGUI http://zengl.org/extra_ru.html.
Я вот хотел бы его переделать под Ultibo .....
MiniQ
новенький
 
Сообщения: 79
Зарегистрирован: 28.01.2013 16:31:55

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Сквозняк » 28.12.2017 02:39:53

olegy123 писал(а):Код будет открыт, но пока это в виде экспериментальной вещи, и думаю что мало кому это нужно.. когда сама структура для меня будет понятной - код опубликую с описанием.

Нужен не просто открытый, а такой открытый, который можно статически линковать с закрытыми приложениями и их авторам ничего за это не будет. У исходников fpc и lazarus такая лицензия.
Сквозняк
энтузиаст
 
Сообщения: 868
Зарегистрирован: 29.06.2006 22:08:32

Re: Графика 3М (GUI на базе OpenGL)

Сообщение MiniQ » 06.02.2018 12:18:41

Нашел еще один похожий пакет,
https://github.com/bgrabitmap/bgracontrolsfx
только развивается.
Кстати, топикстартер давно не отписывался..
MiniQ
новенький
 
Сообщения: 79
Зарегистрирован: 28.01.2013 16:31:55

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 06.03.2018 14:57:52

Извините что долго заставил ждать.. но после встречи нового долго приходил в сознание. Был сильный упадок духа. Даже была мысль уйти из профессии.

Заставил двигаться меня заказчик. Да и я тут вам многое наобещал.
Короче это черновик. Это не альфа/ни бета/ни гамма.. это черновик в котором что-то работает, а точнее TGGUIForm.

черновик.jpg


r1.tar.gz
исходники
(144.91 КБ) Скачиваний: 456


бинарник. Скомпилирован в 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);

нужно продумать легкий и безопасный способ.
Так что пока в одно окно.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Alex2013 » 06.03.2018 20:31:31

olegy123 писал(а):Мне бы сейчас успеть реализовать базовые элементы (Button,Caption,Edit,CheckBox,Image)

Добавлено спустя 1 минуту 8 секунд:
Лекс Айрин писал(а):
olegy123 писал(а): и думаю что мало кому это нужно..


Это ты зря. В свете распространения расширенной реальности вписывание компонент/окон в окружение будет очень актуальной.

Да, под это делается задел.

В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
(или как 2D виджеты в 3D ).
Зы
Как только доберусь в своих программах до "др-интерфеса" так сразу попытаюсь применить ваши наработки . :idea:
Alex2013
долгожитель
 
Сообщения: 2089
Зарегистрирован: 03.04.2013 11:59:44

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 06.03.2018 23:06:46

кто нибудь знает TFreeTypeFont потокобезопасен? валится приложение, когда активно работаю в разных местах c Fonts. Видимо нужно синхронизировать загрузку шрифтов.
Что то не могу понять как мне "стиль" оформить. Конкретно к чему крепить либо самостоятельный компонент у которого каждый элемент берет информацию либо прикрепленный уже к сделанному элементу.

Alex2013 писал(а):В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
не все возможно сделать в 3D. Многие чистые(полностью работающие в 3D) GUI все равно активно используют текстурный фреймбуфер. Так или иначе рисуют на "битмапе". Некоторый 2D функционал еще долго не будет реализован в на ускорителях.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 13.03.2018 13:29:22

Добавил
GUILabel
GUIButton
GUIEdit
vokoscreen-2018-03-13_14-18-06.gif
vokoscreen-2018-03-13_14-18-06.gif (202.2 КБ) Просмотров: 10365


проблемы:
GUIButton пока деревянный - без эмоций. пока думаю как чувства добавить, пока остановился на 3х текстурах: 1) Номрамльная конпка, 2) Мышка наехала, 3) клик.

GUIEdit - тоже пока в придумках как его сделать подвижным. Одно из главных - мигание каретки, как заставить пока не придумал. Либо генерировать 0.5с текст + картека, текст + без картеки. Либо накладывать текстурой и шейдерить миганией текстурой, либо чисто шйедером. Везде есть плюсы и минусы.

Осталось сделать GUICombobox..
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 15.03.2018 14:24:21

Добавил кнопку.. Сделал "анимацию".

o4.gif
o4.gif (83.9 КБ) Просмотров: 10330


Добавлено спустя 4 часа 17 минут 57 секунд:
Слайдер.
o5.gif
o5.gif (73.78 КБ) Просмотров: 10323


Добавлено спустя 19 часов 7 минут 5 секунд:
Ну вот и все, перехожу из стадии черновика в реализацию продукта.

r0000.jpg


Практически все компоненты я научился делать.
Правда хотел воткнуть Combobox, но так как задача имеет множественный подход к решению: можно комбинировать элементы (Edit+Button), можно рисовать на Bitmap-е, можно реализовать слоями.. - имеет много подходов, но тот который я считаю удачным требует доработки базовых элементов. Этот вопрос перенесу в новый код.

сейчас я переключаюсь на работу под Windows. Так как там необходимо мне делать клиента.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 02.10.2018 12:46:58

Ну все. Появилась свободное время.
Собрал из досок и бревен Laser CNC на ардуино. Нужно для электрических плат.
Друг тоже пилит в гараже детали на китайском эрозионном станке. У него возникло желание собрать свой Wunderwaffe станок.
решили делать на STM32.
Нужно сделать кнопконажималку и с управлением этой STM32.

Короче решил пилить визуальный редактор пока для g-Code (пока g-Code). Разумеется в 3D.
Да,да Zub - также будет многопоточно. Постараюсь сделать продакшин(с возможностью передачи третим лицам). Так что такие дела.

Програ будет работать только под линух. с DX11 у меня не сложилось в рамках конверсии кода(на этом я "устал").
Постараюсь включит перевести на Vulkan, благо Intel включило OpenGL 4.х в Messa.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub » 02.10.2018 13:40:47

скоро новый год, из сознания не падай и духом не уходи))
zub
долгожитель
 
Сообщения: 2677
Зарегистрирован: 14.11.2005 23:51:26

Re: Графика 3М (GUI на базе OpenGL)

Сообщение debi12345 » 07.10.2018 16:18:34

В отдельном виде уже есть mse

У которого к тому же есть SDL-форк (гуй, рисуемый средствами библиотеки SDL)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5689
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 20.10.2019 06:00:13

Наконец разобрался с Align.

Без имени.png


Помогло описание: Autosize / Layout/ru
Стало понятно что должно быть сперва. Но интегрировать не стал, так как 2D и базируется на Ancor, Align сидит в глубине.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Alex2013 » 04.04.2021 10:22:54

Кстати этот проект жив ? Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
Alex2013
долгожитель
 
Сообщения: 2089
Зарегистрирован: 03.04.2013 11:59:44

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 » 06.04.2021 01:36:53

Alex2013 писал(а):Кстати этот проект жив ?
Ну как сказать.. он пилился под конкретные цели, вроде цели были взяты. Далее нужно было объяснить одним богатым буратинам почему они должны добровольно отдать нам свои 5 золотых. А ведь хорошо когда только шлифуешь свою тему и еще имеешь от этого гешефт. Эх, не у всех мечты сбываются.
Вот приходится сейчас вместо свободными идеями и творчеством заниматься рутиной, которая вымораживает.

Но, есть заинтересованность у одних в некоторых модулях. Не исключено что придется 3D-GUI доделывать.

Alex2013 писал(а):Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
писал под линух, нужны OpenGL 4.2 минимум. под виндовс не запускал, так как винды не было, а виртуализация не может 3D рисовать. Хотя сейчас у меня есть GVT-g можно, обкатывать в винде.
olegy123
долгожитель
 
Сообщения: 1635
Зарегистрирован: 25.02.2016 12:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Alex2013 » 06.04.2021 03:59:13

Я как легко догадался хочу попробовать прикрутить что-то похожее к своему 3D/VR проекту, потому что пока мои идеи касательно условно текстового GUI дальше захвата обычной формы целиком или "рисования букв на текстуре" не продвинулись .
Изображение
Зы
Кстати как позицировать курсор мыши на "повернутую в 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д координаты формы )
Alex2013
долгожитель
 
Сообщения: 2089
Зарегистрирован: 03.04.2013 11:59:44

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru