ZenGL - это бибилотека создающая контекст окна для работы с OpenGL на разных платформах.
Среда разработки:
- Lazarus/FreePascal
- Delphi
Поддерживаемые платформы для FPC/Lazarus:
- Windows 32/64
- Linux 32/64
- Android ARM32/ARM64/x86/x86_64
- портативные компьютеры (Steam Deck, Rog Ally, Ayaneo и другие основанные на Linux или Windows).
- MacOS Cocoa - тестовая версия
- MacOS Carbon в версии 4.0 было удалено, при необходимости используйте версию 3.12
Поддерживаемые платформы для Delphi:
- Windows 32 (Windows 64 только с динамическими библиотеками).
ведётся разработка библиотеки Green Engine, основанной на ZenGL. Работать они будут только вместе!
Старая страничка, много полезного: ZenGL - архив гейдейва
--------------------------------------------------------------------------------------
Старые версии:
--------------------------------------------------------------------------------------
ZenGL 3.20
--------------------------------------------------------------------------------------
Игры и программы с использованием ZenGL:
Dangerous caves
--------------------------------------------------------------------------------------
демо-версии запущенные на андроид
Android:
Видео, где показана сборка проектов используя Android Studio.
Решение проблем, связанных с запуском приложений на Android
Unix-системы:
Важно! В самом первом модуле надо прописывать код:
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Старый сайт больше недоступен. Информация почти утеряна по нему. :(
Все вопросы и пожелания можно оставлять здесь или отправлять на мыло
Благодарю за внимание.
Я продолжаю работать с ZenGL, но, чтоб вам было понятно, для меня сам ZenGL - это несколько основных файлов по созданию рабочего проекта/программы под определённую ОС или под несколько или, возможно, и под все сразу. Изначально меня интересовала разработка под Windows и Linux. Но столкнувшись (уже более полугода как) с тем что ZenGL может создавать программы и под Android, я всё же решил использовать это для своего развития, и возможно для развития самого ZenGL.
За прошедшее время, пока я хотел разобраться как можно создать джойстики, а потом меня осенило - создать клавиатуру... А потом меня ещё осенило и я понял, что это возможность создавать меню для любой платформы.
И я утопал всё глубже и глубже... Одно тянуло за собой другое... потом третье и т. д. Заниматься этим можно вечно и так ни чего и не выпустить в свет. Поэтому меню/джойстики на данной версии откладываются, так как они вытянули очень много не решённых до этого "проблем" и меню будет уже в другой версии... Но она будет не совсем совместима со старыми версиями, особенно это касается Android.
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
Прошу многих извинить!!! Но специально заниматься разработкой/доработкой под MacOS/iOS в данное время не буду (для MacOS частично решено). Так же специальной поддержкой DelphiXE заниматься не буду. Большинство примеров под Delphi 7 будут работать и под DelphiXE для Windows. Возможно, если DelphiXE поддерживает, будет поддержка Linux. Если DelphiXE поддерживает приложения под Linux, просьба сообщить мне об этом (сильного желания устанавливать эту среду программирования, нет).
Так же не буду продолжать поддержку DirectX, это в ваших руках, но на это так же надо потратить много времени.
Множество вопросов по работе с ZenGL решены и приведены в примерах. Примеры смотрите под Delphi 7, Lazarus и Android.
Под FPC (без Lazarus), MacOS и iOS я не переделывал примеры, их можно так же переделать, подсмотрев в других примерах указанных выше.
До документации пока руки не дойдут, за это больше всего извиняюсь! Много информации есть в демках, так же постарался документировать функции в коде.
-----------------------------------------------------------------------------------------------------------------------
Связь со мной:
- почта
Канал на ютубе, выкладываю периодически видео может кому полезно будет. Ну, или так же на форумах, просматриваю темы, по возможности отвечаю (или отмечаю о недоработках для себя)
Представляю новую версию ZenGL! 3.25!!!
ссылка на скачивание
Изменения коснулись в основном LCL(VCL)-приложений. Так как выяснилось, что ZenGL не отвечал на некоторые системные запросы формы. В том числе клавиатуры и мыши. В следствии чего пришлось перерабатывать библиотеку, для возможности работы с клавиатурой и мышью, но некоторые функции и процедуры теперь не работают, если вы используете не нативное приложение. Но это вполне можно компенсировать всеми библиотеками Lazarus, ведь теперь ZenGL дружественно себя ведёт с LCL-приложениями.
Так же были запросы по поводу работы ZenGL на MacOS. Я проверил, OpenGL работает на MacOS, но с определёнными ограничениями. Поэтому так же введу поддержу MacOS, но работать эти приложения будут только под LCL, не нативно.
Парочка ссылок видео:
Запуск демки на MacOS Cocoa
а тем временем, потихоньку полегоньку, глядишь и на маке можно будет создавать игрушки. (и пофиг что поздновато :) )
P.S. А походу ни сколько и не поздно! Big Sur продолжает поддержку OpenGL и OpenCL. )))
А ты не решал проблему совпадения имён библиотек движка с системными и паскалевскими? Она наблюдалась линуксе и в этом движке, и в редакторе fp при его сборке с отладчиком. Суть её в том, что в библиотеках заархавирована туева куча мелких либ *.o и иногда в разных библиотеках находятся *.o с одинаковыми именами. А при линковке звёзды иногда складываются так, что *.o линковщик танет не оттуда, откуда ожидает разработчик. В зенгл линковщик тянул вместо движковой либы паскалевскую. Шаманить со сборочными скриптами чтобы этого избежать, это неудобный метод, из-за него сборка усложняется. Превентивно все *.o из движка, которые можно переименовать, и после этого всё будет собираться, переименовал, пропатчил в движке линковку по типу
{$IFDEF USE_LIBJPEG} {$IFNDEF ANDROID} {$L z_jpeg_helper} //[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ {$L z_jaricom} {$L z_jcomapi} {$L z_jdapimin} {$L z_jdapistd} {$L z_jdarith} {$L z_jdatasrc} {$L z_jdcoefct} {$L z_jdcolor} {$L z_jddctmgr} {$L z_jdhuff} {$L z_jdinput} {$L z_jdmainct} {$L z_jdmarker} {$L z_jdmaster} {$L z_jdmerge} {$L z_jdpostct} {$L z_jdsample} {$L z_jerror} {$L z_jidctflt} {$L z_jidctfst} {$L z_jidctint} {$L z_jmemmgr} {$L z_jmemnobs} {$L z_jquant1} {$L z_jquant2} {$L z_jutils} //[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ {$ENDIF} {$IFDEF MACOSX}
И больше такого не случалось.
Вроде сталкивался. Там достаточно было модули местами поменять, чтобы прогружались первыми те, которые требуются.
Ну, или перебираешь модули и делаешь последовательную загрузку библиотек в том порядке, в котором тебе надо. (муторно, зато надёжно)
Зашёл на форум зенгээла, оказывается ты на кирпиче застрял. Я тоже ,через два года там спотыкнулся.
Выложил прохождение с некоторыми исправлениями.
не сейчас... мак ждёт (хотя не наркоман я вроде)
ссылочку внутрь убери, а то как-то она не очень хорошо выглядит )))
Mirrel
> Я проверил, OpenGL работает на MacOS, но с определёнными ограничениями.
если ты и вправду устремился переточить ZenGL под мак, то твой следующий шаг - перепись на Метал!
(а от туда, для других платформ - Вулкан)
в 100й раз тебе повторю, твой единственный шанс, это публиковаться на не яндекс диске, а на каком-нить github-е.
skalogryz, если и буду делать метал, то не сейчас.
Для этого опять информацию надо собирать. А информация опять вся в Си и objective-c как обычно... и выцарапывать её оттуда...
это публиковаться на не яндекс диске
кто-то давно не следил за версиями... )))
странно, а тут забыл подправить, исправил недочёт
Mirrel
> странно, а тут забыл подправить, исправил недочёт
во! уже дело!
Представляю вашему вниманию новую версию ZenGL.
Введена новая работа с таймерами и шрифтами.
Таймера теперь можно запускать и останавливать в любое время, а так же это можно делать с задержкой. ограничено 20-ю таймерами.
Так же, теперь можно работать с несколькими разными шрифтами одновременно, не более 5.
Введено ограничение FPS для всех PC-систем. Это не то же самое что вертикальная синхронизация!!! При установке FPS > 60, вертикальная синхронизация автоматически включается (не все мониторы поддерживают частоту > 60 Гц).
Возможные значения ограничения FPS = 30, 60, 75, 85, 90, 100, 120 и 144. Исключающие эти значения будут переведены в значение 60.
Есть же программы для записи, есть эмуляторы. Зачем так мучить зрителя?
Salamandr, смотря про что вы пишите!
Mirrel
я про видео конечно, смотреть его не возможно. Где стабилизация камеры, почему идут постоянные дергания. Ну можно же её поставить жестко.