ZenGL + поддержка android

Общие вопросы программирования, алгоритмы и т.п.

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

Re: ZenGL + поддержка android

Сообщение Seenkao » 24.04.2021 13:19:02

Сейчас не до этого, к сожаленью. Слишком много мелочи выползает: то оказывается символ какой-то не пропечатывается, следом это оказалось критично для работы программы (заменив вывод символа на знак вопроса и опросом существует символ или нет - решилось), то вырезка не работает должным образом (нужна была поворотная вырезка), то нельзя сохранить текстовый файл средствами ZenGL, и так ещё тысячи мелочей; - пока ковыряюсь с этим полем ввода независимым от системы. И это нужно учитывать, что почти ни на каких системах не проверялось, а что там выползет где-нибудь на Android-е? :) (благо многие вещи сделаны уже так, что при мельчайшем исправлении автоматика срабатывает и свой код править не приходится).

Потому многое надо откладывать на более позднее время. Нужно чтоб всё работало стабильно, а уже после на этот код все наработки делать. ...а терпения не хватает и хочется всё побыстрее выложить. :D :D :D

Cheb писал(а):Raspberry Pi
хм... может тоже под него контекст замутить? :mrgreen: :mrgreen: :mrgreen: Идей много, может Kolibri поставлю в очередь, у них есть TiniGL и глядишь людям полегче будет разрабатывать что...

P.S. ... а не слишком ли я разогнался? ... 8)

Добавлено спустя 4 минуты 17 секунд:
P.P.S. И, кстати, Android, надо ставить на передовую очередь. Вносить туда таймер надо, чтоб всё работало стабильно, работая так как сейчас работает ZenGL - не очень стабильно, на физике видно, как она (физика) загружает и не даёт работать стабильно приложению.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Seenkao » 30.04.2021 17:29:56

Всем привет!
Нужна маленькая помощь. На данный момент с полем ввода "бодаюсь" с мышью, но просто времени не было доделать до конца, хотя все расчёты по выявлению координат попадания уже сделал (поле ввода можно будет поворачивать на какой-нибудь угол). Но, вероятно, многих мелочей не учёл ещё.
На скрине выложил, что сделано, что нет. На данное время CapsLock и NumLock независимо от системы работают (может быть не удобно, но для игры пофиг), для этого надо для каждой системы запросы на клавиатуру делать отдельно? Или можно что-то общее взять? (по моему опять бред пишу, системные запросы у систем разные).

В общем, нужны указания, подсказки, что я ещё не учёл.

-----------------------------------------------------------------------------------------------------
В новой версии будет добавлена возможность чтения текстовых UTF-8 файлов (хотя по идее можно любой файл так считать, просто учитывать надо что не с UTF-8 работаешь). Ввожу комментарии для процедур-функций, потому в Lazarus будет видно, что делает данная процедура/функция, но прокомментировал ещё только малую часть.
Будет введена процедура обработки клавиатуры, джойстика, мыши, тачпада - работает как отдельный таймер и теперь не надо писать лишнего, такого как key_clearstate, mouse_clearstate и подобных. Обработку клавиатуры, мыши, тачпада, джойстика надо будет производить именно в ней, иначе можете получить непредвиденные ситуации.
Ну и тонна мелких доработок, наверно все не перечислить. :D ...и все они только в светлом будущем... :roll:
-----------------------------------------------------------------------------------------------------
Вложения
Без имени.png
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Seenkao » 06.05.2021 19:24:05

Пока здесь, требуется (на ближайшее будущее):
- состыковать и проверить Wayland (вопрос как проверить, у меня иксы везде...).
- создать таймер для android и отделить все вычисления от рендеринга. Так же убрать все работы из рендеринга, которых не должно там быть (для совместимости версий).
- сделать полностью нативный android (только как тестовая версия).
- воткнуть ассемблер для быстрых графических вычислений и обработки массивов, для всех платформ (писец работы... сначала надо будет проверить хотя бы для одной платформы).
- освободиться от внешних библиотек или предоставить все библиотеки в комплекте (в данное время уже существуют недостающие для определённых платформ, библиотеки).
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Seenkao » 15.06.2021 12:50:38

Дочка поигралась на телефоне и нашла проблему...
Я её конечно ещё не решал, но довольно странная проблема, только при выводе спрайтов проявляется. В общем, на Android, запускаем приложение, "выключаем" телефон (спящий режим, тёмный экран, как это ещё объяснить? :) ), выходим из "спящего режима" открывается наше приложение и работает в ускоренном режиме. И так можно делать до бесконечности.

С чем это связано, пока не понял. Но возможно, когда отделю основной процесс от процесса рисования, проблема сама решится.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Seenkao » 18.07.2021 05:08:29

Всем привет! Обновил версию ZenGL до 3.28.
И с данного момента (так то и раньше уже было) теперь параллельно идёт разработка собственной библиотеки Green Engine. Она основана на ZenGL и больше её ни куда не прицепить (у меня и не было желания это всё ещё и с остальным состыковывать 8) и так убил тонну времени на всю мелочёвку :evil: ).

GE - предоставляет в данное время только возможность работать с полем ввода, и виртуальной клавиатурой, которую ещё надо доделывать... :'( Для мобильных систем пока ни как не состыкована эта клавиатура, хотя для неё изначально только и делал.

Поле ввода пока только проверены на Windows и Linux. На MacOS должно работать, но пока не проверял.

В дальнейших планах доработать клавиатуру и джойстики, и уже доводить до ума Android-версию. (где-то там на проходил слушок, что надо отделить многое от рендериндга... как раз есть возможность заняться :wink: ).

Пока занимаюсь переделкой всякой мелочёвки, добавляю комментарии к процедурам/функциям. Глядишь людям удобнее при работе будет.

Надеюсь полезное видео, где я переделываю 3-ю демо-версию. В конце видео показываю, как можно использовать несколько полей ввода.

Добавлено спустя 5 часов 11 минут 59 секунд:
Следом исправления для MacOS Cocoa. Оказывается у него нет отжатия клавиши Caps...
Будете работать, делайте запрос только на нажатие.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Сквозняк » 26.07.2021 06:39:12

Seenkao писал(а):Будете работать, делайте запрос только на нажатие.


С отжатием код сложнее, потому можно и не заметить, что оно не работает :mrgreen:
Код: Выделить всё
if nazatie_v_etom_kadre then if nazatie_v_proslom_kadre=false
then begin


        end;
Сквозняк
энтузиаст
 
Сообщения: 997
Зарегистрирован: 29.06.2006 22:08:32

Re: ZenGL + поддержка android

Сообщение Seenkao » 26.07.2021 17:35:32

Сквозняк, да с этим маком... там оказывается вообще нет как таковых нажатий Ctrl, Shift, Alt, Command и Caps. Хотя про Caps вообще отдельная тема. Если для первых четырёх приходят события что были произведены с ними действия и выдаётся их состояние. То для Caps приходит только его состояние, мы ни когда не узнаем, это было нажатие или отжатие. :?

Добавлено спустя 27 минут 11 секунд:
Обновил последнюю версию. Исправил все ошибки (надеюсь), которые нашёл. Проверил на MacOS - работает.

теперь надо переделать клавиатуру нормально и смотреть как всё работает с мобильными системами.

Добавлено спустя 20 минут 12 секунд:
Исправил давнюю ошибку. Когда можно было нажать две клавиши Shift (Ctrl, Alt, Command) и после отпускания одной из них событие K_SHIFT (K_CTRL, K_ALT, K_SUPER) так же "отжимались" (хотя не должны были). Теперь они сохраняют своё состояние, пока одна из клавиш нажата.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Сквозняк » 26.07.2021 18:35:14

Продолжал рыть форматы картинок на тему jpg с прозрачностями или png с потерями. Ну как-то совсем не хочется распиливать png с со слоем прозрачности на два файла чтобы получше ужать, а потом грузить их по отдельности и склеивать. Это садомазо со сторонними утилитами какое-то. И тут нашёлся формат, в котором это наконец-то сделали, гугел постарался, на основе видеокодека. Формат для картинок - Webp смотреть их можно браузерами. И патент в libwebp-0.3.0-10.el7_9.src.rpm прикольный положен:
Код: Выделить всё
Additional IP Rights Grant (Patents)

"This implementation" means the copyrightable works distributed by
Google as part of the WebM Project.

Google hereby grants to you a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this section)
patent license to make, have made, use, offer to sell, sell, import,
transfer, and otherwise run, modify and propagate the contents of this
implementation of VP8, where such license applies only to those patent
claims, both currently owned by Google and acquired in the future,
licensable by Google that are necessarily infringed by this
implementation of VP8. This grant does not include claims that would be
infringed only as a consequence of further modification of this
implementation. If you or your agent or exclusive licensee institute or
order or agree to the institution of patent litigation against any
entity (including a cross-claim or counterclaim in a lawsuit) alleging
that this implementation of VP8 or any code incorporated within this
implementation of VP8 constitutes direct or contributory patent
infringement, or inducement of patent infringement, then any patent
rights granted to you under this License for this implementation of VP8
shall terminate as of the date such litigation is filed.

Получается, можно как угодно к их либам динамически линковаться и пока на гугл сам за формат судиться не полезешь, можно им пользоваться. Самое то для движков, да и в паскале к нему модуля не хватает. И вот, что интересное в libwebp-devel-0.3.0-7.el7.x86_64/usr/include/webp
Код: Выделить всё
// Copyright 2010 Google Inc. All Rights Reserved.
//
// This code is licensed under the same terms as WebM:
//  Software License Agreement:  http://www.webmproject.org/license/software/
//  Additional IP Rights Grant:  http://www.webmproject.org/license/additional/
// -----------------------------------------------------------------------------
//
//  Common types
//
// Author: Skal (pascal.massimino@gmail.com)


Никогда ещё Штирлиц не был так близок к провалу! Вот кто у нас на форуме специалист по подключению webp к паскалю.

А
Сквозняк
энтузиаст
 
Сообщения: 997
Зарегистрирован: 29.06.2006 22:08:32

Re: ZenGL + поддержка android

Сообщение Seenkao » 26.07.2021 18:53:44

Сквозняк, срыв покровов. )))

Лично я пока не интересовался подобным и не слышал даже об этой библиотеке...

Добавлено спустя 20 минут 58 секунд:
jpg vs webp - по сути, что я и ожидал. Верить на слово гигантам не стоит. Им нужны деньги, а не развитие.

Хотя я не спорю, что webp достаточно неплох! )))
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Сквозняк » 26.07.2021 19:26:41

Это потому что ты не сохранял много картинок из яндекса. Некоторые не сохраняются нормально на диск, а если сохраняются, то потом ничем кроме браузера не открываются. Это потому что на сайтах формат картинок webp уже используется и чем дальше, тем таких картинок будет больше. В среднем, он на процентов 15 жмёт лучше jpg, там же одних исходников больше метра, и при этом можно использовать слой прозрачности - решение больной проблемы джипега. За столько лет никто не сделал форк джипега с прозрачностью, а теперь появилось халявное решение. А всякие лишние цветовые пространства типа CMYK, которые есть в оригинальном jpg, нам ведь нафиг не нужны, так что можно пробовать подключать "новый" формат к паскалю. И слово предоставляется Скалогрызу, пусть делится опытом.

В яндексе такие картинки легко ищутся -Изображение
Вроде бы по ссылке jpg а попробуй скачать на диск и окажется, что картинка давно пожата в webp. Чтобы её посмотреть, перетащи в адресную строку браузера. Процесс замены старых картинок на новый формат постепенно идёт.

Добавлено спустя 3 минуты 15 секунд:
Seenkao писал(а): Верить на слово гигантам не стоит. Им нужны деньги, а не развитие.


Гуглу нужны крутые форматы для своего говнобраузера. Лицензию он выдал, можно пользоваться старой версией либы пока она продолжает работать, а новые версии нам до тех пор и не нужны - 0.05% компрессии ничего не решают.
Сквозняк
энтузиаст
 
Сообщения: 997
Зарегистрирован: 29.06.2006 22:08:32

Re: ZenGL + поддержка android

Сообщение Seenkao » 26.07.2021 19:49:18

Когда работаешь с изображениями, надо учитывать, нужно качество изображение или просто его просмотр. WebP сделан для быстрого просмотра, много где говорится, что потери достаточно большие особенно по сравнению с PNG файлами или фотографиями в JPG.

Этот формат пиарят, потому он "лучший". Но как раз конкретных примеров мало (точнее почти нет). Даже люди, которые "рекламируют" webP не приводят доводов и конкретных результатов для этого формата. Но косточки PNG и JPG обмусолят до упора.

Ещё раз повторюсь, я не топлю против webP я смотрю со стороны "вечного обмана". Где гиганты только и хотят, чтоб "навязать" что-то. И потому, в части обзоров людей зачастую и написано, что надо каждый раз подбирать свой формат. Думаю данный формат неплохо подойдёт именно для браузеров. Но вот для игр... я не уверен...
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Сквозняк » 26.07.2021 21:32:33

Seenkao писал(а):Когда работаешь с изображениями, надо учитывать, нужно качество изображение или просто его просмотр. WebP сделан для быстрого просмотра, много где говорится, что потери достаточно большие особенно по сравнению с PNG файлами или фотографиями в JPG.


В случае игроделания просто нужен джипег со слоем прозрачности, который чудаки на букву М при разработке формата не добавили. Лучшим вариантом был бы форк паскалевского jpg. В fpc вроде есть pasjpeg, его и надо форкнуть и дать условное название новому формату например jpa, чтобы не путать. Его и в кастле можно потом добавить. Когда будет время, можно будет глянуть, есть ли возможность его переколбасить с минимумом усилий.
Сквозняк
энтузиаст
 
Сообщения: 997
Зарегистрирован: 29.06.2006 22:08:32

Re: ZenGL + поддержка android

Сообщение Seenkao » 27.02.2022 03:28:43

Всем привет! После долгой и кропотливой разработки в разных направлениях выпускаю новую версию ZenGL.

Обновления все в файле Update_ZenGL.txt.

Основное можно выделить, то, что прицепил полный OpenGL к ZenGL с обновлениями на конец 2021 года (тем кто пользуется Linux много возможностей открывается, как я посмотрел, пока перебирал). Есть возможность создания нового контекста для тех, кто хочет потренироваться в работе с OpenGL. Окно и контекст как обычно создаёт ZenGL, но есть только "устаревшие" объявления View порта, те, что ещё Андрей разрабатывал. Потому, если есть умельцы, можете подменить своими начинками и в путь.

Для создания нового контекста, вам минимально нужно будет отключить дефайн USE_MIN_OPENGL в файле GLdefine.cfg (смотрим первую демку). Он включен для основной функциональности ZenGL. Если поковыряться в этом файле настроек, то вы можете настроить OpenGL под чисто ваш выбор (не переусердствуйте, какие-то процедуры/функции нужны будут достаточно давних лет).

Сразу оговорюсь, изменения были произведены только для демок для Lazarus, поэтому копируем демку куда нам нужно и запускаем (проверить ещё много надо :cry: я проверил только основу).

Linux, Windows должно работать.

Для определённых версий Windows (например 10) LCL работать не будет. Происходит конфликт. Пока даже не копал по какой причине.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Re: ZenGL + поддержка android

Сообщение Alex2013 » 27.02.2022 14:47:58

IrfanView отлично смотрит webp (правда с плагином но он общедоступный https://www.irfanview.com/plugins.htm )
Зы
Кстати интересно, а нельзя ли эти плагины из программы на лазарусе юзать ? ( Кроме webp там куча других форматов поддерживается )
Alex2013
долгожитель
 
Сообщения: 2503
Зарегистрирован: 03.04.2013 11:59:44

Re: ZenGL + поддержка android

Сообщение Seenkao » 28.02.2022 23:25:23

Обновил репозиторий.

Все демки обновлены. Исправлены баги и недочёты. С Windows 10 разобрался. Там проблемы с таймерами и обработкой внутреннего цикла ZenGL.

Если собираетесь работать с LCL, то во многих вызываемых процедурах надо выключать/включать таймер, чтобы не накладывались события друг на друга. Я понимаю, что это дебильный способ, но меня честно не интересовал LCL, поэтому это только возможное рабочее решение. Вы можете попробовать делать это без таймера.

Так же, если используете LCL, то забудьте об обработке мыши и клавиатуры средствами ZenGL, используете средства LCL.

Для FreePascal-демок вам придётся самим прописать путь до FPC в маке-файле.
Seenkao
постоялец
 
Сообщения: 400
Зарегистрирован: 01.04.2020 03:37:12

Пред.След.

Вернуться в Общее

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

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

Рейтинг@Mail.ru
cron