Страница 3 из 5
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 27.12.2017 20:44:15
MiniQ
Под какую операционку пишется?
Под винды и линукс уже есть ZenGUI
http://zengl.org/extra_ru.html.
Я вот хотел бы его переделать под Ultibo .....
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 28.12.2017 01:39:53
Сквозняк
olegy123 писал(а):Код будет открыт, но пока это в виде экспериментальной вещи, и думаю что мало кому это нужно.. когда сама структура для меня будет понятной - код опубликую с описанием.
Нужен не просто открытый, а такой открытый, который можно статически линковать с закрытыми приложениями и их авторам ничего за это не будет. У исходников fpc и lazarus такая лицензия.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 06.02.2018 11:18:41
MiniQ
Нашел еще один похожий пакет,
https://github.com/bgrabitmap/bgracontrolsfxтолько развивается.
Кстати, топикстартер давно не отписывался..
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 06.03.2018 14:18:46
olegy123
Извините что долго заставил ждать.. но после встречи нового долго приходил в сознание. Был сильный упадок духа. Даже была мысль уйти из профессии.
Заставил двигаться меня заказчик. Да и я тут вам многое наобещал.
Короче это черновик. Это не альфа/ни бета/ни гамма.. это черновик в котором что-то работает, а точнее TGGUIForm.
- r1.tar.gz
- исходники
- (144.91 КБ) 1488 скачиваний
бинарник. Скомпилирован в 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)
Добавлено: 06.03.2018 19:31:31
Alex2013
olegy123 писал(а):Мне бы сейчас успеть реализовать базовые элементы (Button,Caption,Edit,CheckBox,Image)
Добавлено спустя 1 минуту 8 секунд:Лекс Айрин писал(а):olegy123 писал(а): и думаю что мало кому это нужно..
Это ты зря. В свете распространения расширенной реальности вписывание компонент/окон в окружение будет очень актуальной.
Да, под это делается задел.
В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
(или как 2D виджеты в 3D ).
Зы
Как только доберусь в своих программах до "др-интерфеса" так сразу попытаюсь применить ваши наработки .

Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 06.03.2018 22:06:46
olegy123
кто нибудь знает
TFreeTypeFont потокобезопасен? валится приложение, когда активно работаю в разных местах c Fonts. Видимо нужно синхронизировать загрузку шрифтов.
Что то не могу понять как мне "стиль" оформить. Конкретно к чему крепить либо самостоятельный компонент у которого каждый элемент берет информацию либо прикрепленный уже к сделанному элементу.
Alex2013 писал(а):В принципе верно ! Но там имеет смысл все делать сразу в 3D ..
не все возможно сделать в 3D. Многие чистые(полностью работающие в 3D) GUI все равно активно используют текстурный фреймбуфер. Так или иначе рисуют на "битмапе". Некоторый 2D функционал еще долго не будет реализован в на ускорителях.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 13.03.2018 12:29:22
olegy123
Добавил
GUILabel
GUIButton
GUIEdit

- vokoscreen-2018-03-13_14-18-06.gif (202.2 КБ) 37470 просмотров
проблемы:
GUIButton пока деревянный - без эмоций. пока думаю как чувства добавить, пока остановился на 3х текстурах: 1) Номрамльная конпка, 2) Мышка наехала, 3) клик.
GUIEdit - тоже пока в придумках как его сделать подвижным. Одно из главных - мигание каретки, как заставить пока не придумал. Либо генерировать 0.5с текст + картека, текст + без картеки. Либо накладывать текстурой и шейдерить миганией текстурой, либо чисто шйедером. Везде есть плюсы и минусы.
Осталось сделать GUICombobox..
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 16.03.2018 12:49:23
olegy123
Добавил кнопку.. Сделал "анимацию".

- o4.gif (83.9 КБ) 37435 просмотров
Добавлено спустя 4 часа 17 минут 57 секунд:Слайдер.

- o5.gif (73.78 КБ) 37428 просмотров
Добавлено спустя 19 часов 7 минут 5 секунд:Ну вот и все, перехожу из стадии черновика в реализацию продукта.
Практически все компоненты я научился делать.
Правда хотел воткнуть Combobox, но так как задача имеет множественный подход к решению: можно комбинировать элементы (Edit+Button), можно рисовать на Bitmap-е, можно реализовать слоями.. - имеет много подходов, но тот который я считаю удачным требует доработки базовых элементов. Этот вопрос перенесу в новый код.
сейчас я переключаюсь на работу под Windows. Так как там необходимо мне делать клиента.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 02.10.2018 11:46:58
olegy123
Ну все. Появилась свободное время.
Собрал из досок и бревен Laser CNC на ардуино. Нужно для электрических плат.
Друг тоже пилит в гараже детали на китайском эрозионном станке. У него возникло желание собрать свой Wunderwaffe станок.
решили делать на STM32.
Нужно сделать кнопконажималку и с управлением этой STM32.
Короче решил пилить визуальный редактор пока для g-Code (пока g-Code). Разумеется в 3D.
Да,да Zub - также будет многопоточно. Постараюсь сделать продакшин(с возможностью передачи третим лицам). Так что такие дела.
Програ будет работать только под линух. с DX11 у меня не сложилось в рамках конверсии кода(на этом я "устал").
Постараюсь включит перевести на Vulkan, благо Intel включило OpenGL 4.х в Messa.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 02.10.2018 12:40:47
zub
скоро новый год, из сознания не падай и духом не уходи))
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 07.10.2018 15:18:34
debi12345
В отдельном виде уже есть mse
У которого к тому же есть SDL-форк (гуй, рисуемый средствами библиотеки SDL)
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 20.10.2019 05:00:13
olegy123
Наконец разобрался с Align.
Помогло описание:
Autosize / Layout/ruСтало понятно что должно быть сперва. Но интегрировать не стал, так как 2D и базируется на Ancor, Align сидит в глубине.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 04.04.2021 09:22:54
Alex2013
Кстати этот проект жив ? Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 06.04.2021 00:36:53
olegy123
Alex2013 писал(а):Кстати этот проект жив ?
Ну как сказать.. он пилился под конкретные цели, вроде цели были взяты. Далее нужно было объяснить одним богатым буратинам почему они должны добровольно отдать нам свои 5 золотых. А ведь хорошо когда только шлифуешь свою тему и еще имеешь от этого гешефт. Эх, не у всех мечты сбываются.
Вот приходится сейчас вместо свободными идеями и творчеством заниматься рутиной, которая вымораживает.
Но, есть заинтересованность у одних в некоторых модулях. Не исключено что придется 3D-GUI доделывать.
Alex2013 писал(а):Пытался собрать под винду... Не фурычит! Сборка в Fpc 3.0.4 "молчит как партизан" (вешая процесс в памяти) Сборка в Fpc 3.2.0 вылетает с ошибкой.
писал под линух, нужны OpenGL 4.2 минимум. под виндовс не запускал, так как винды не было, а виртуализация не может 3D рисовать. Хотя сейчас у меня есть
GVT-g можно, обкатывать в винде.
Re: Графика 3М (GUI на базе OpenGL)
Добавлено: 06.04.2021 02:59:13
Alex2013
Я как легко догадался хочу попробовать прикрутить что-то похожее к своему 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д координаты формы )