ZenGL - это бибилотека создающая контекст окна для работы с OpenGL на разных платформах.
Среда разработки:
- Lazarus/FreePascal
- Delphi
Поддерживаемые платформы для Lazarus/FreePascal:
- Windows 32/64
- Linux 32/64
- Android
- MacOS Cocoa - тестовая версия
- MacOS Carbon (не проверено используйте версию 3.12 если не будет работать)
Поддерживаемые платформы для Delphi:
- Windows 32 (вероятно некоторые демо-версии будут работать и с Windows 64, но точно не все)
ведётся разработка библиотеки Green Engine, основанной на ZenGL. Работать они будут только вместе!
Старая страничка, много полезного: ZenGL - архив гейдейва
--------------------------------------------------------------------------------------
старые версии:
ZenGL 3.24
ZenGL 3.20
--------------------------------------------------------------------------------------
Версия ZenGL 3.24 изменения:
- Версия стабильно компилирует под Win64, изменено для версий FPC > 3
- Для Windows, теперь "ALT" + клавиша не вызывает системных звуков
- Для Linux - теперь создаётся рабочая дирректория, но помните!!! Это может быть общий каталог, куда вы "установили" свою программу. Поэтому это сделано для тех программ (которые вы создаёте) для которых вы выделяете отдельный каталог
- Введено несколько дефайнов:
- Escape = exit
- Дефайны для полных версий OpenGL, но пока реализовано только для OpenGL ES, в дальнейшем коснётся и самого OpenGL для компьютеров
- для инициализации под LCL/VCL (handle - окна), по умолчанию включены в данной версии, в следующих версиях по умолчанию будет отключено
- редактированы дефайны под Android, исключён не используемый код
- возращены некоторые функции (которые удалил ранее :/ понял что если человек будет создавать библиотеку, то они нужны будут), некоторые немного изменил, так же исключая повторный и не используемый код
- дополнил OpenGL ES (1.0) отсутствующими, до этого времени, функциями (кроме glColor4f, в данной версии она сделана под определённую работу и занята), так же указаны не используемые функции версии 1.1
- дополнил OpenGL недостающими функциями, но немногими, очень много ещё отсутствует
Версия ZenGL 3.20 изменения:
- мелкие модификации внутреннего кода.
- настройка поддержки компиляции под Android, прописывание дефайнов, модификация кода.
демо-версии запущенные на андроид
Android:
Решение проблем, связанных с запуском приложений на Android
Unix-системы:
Важно! В самом первом модуле надо прописывать код:
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
Основная информация не поменялась, кроме исходного кода. Смотрите демо-версии и на сайте: ZENGL
сопутствующие видео.
Все вопросы и пожелания можно оставлять здесь или отправлять на мыло
Благодарю за внимание.
Я продолжаю работать с ZenGL, но, чтоб вам было понятно, для меня сам ZenGL - это несколько основных файлов по созданию рабочего проекта/программы под определённую ОС или под несколько или, возможно, и под все сразу. Изначально меня интересовала разработка под Windows и Linux. Но столкнувшись (уже более полугода как) с тем что ZenGL может создавать программы и под Android, я всё же решил использовать это для своего развития, и возможно для развития самого ZenGL.
За прошедшее время, пока я хотел разобраться как можно создать джойстики, а потом меня осенило - создать клавиатуру... А потом меня ещё осенило и я понял, что это возможность создавать меню для любой платформы.
И я утопал всё глубже и глубже... Одно тянуло за собой другое... потом третье и т. д. Заниматься этим можно вечно и так ни чего и не выпустить в свет. Поэтому меню/джойстики на данной версии откладываются, так как они вытянули очень много не решённых до этого "проблем" и меню будет уже в другой версии... Но она будет не совсем совместима со старыми версиями, особенно это касается Android.
-----------------------------------------------------------------------------------------------------------------------
Изменения в версии 0.3.24:
- Версия стабильно компилирует под Win64, изменено для версий FPC > 3
- Для Windows, теперь "ALT" + клавиша не вызывает системных звуков
- Для Linux - теперь создаётся рабочая дирректория, но помните!!! Это может быть общий каталог, куда вы "установили" свою программу. Поэтому это сделано для тех программ (которые вы создаёте) для которых вы выделяете отдельный каталог
- Введено несколько дефайнов:
- Escape = exit
- Дефайны для полных версий OpenGL, но пока реализовано только для OpenGL ES, в дальнейшем коснётся и самого OpenGL для компьютеров
- для инициализации под LCL/VCL (handle - окна), по умолчанию включены в данной версии, в следующих версиях по умолчанию будет отключено
- редактированы дефайны под Android, исключён не используемый код
- вернул некоторые функции (которые удалил ранее :/ понял что если человек будет создавать библиотеку, то они нужны будут), некоторые немного изменил, так же исключая повторный и не используемый код
- дополнил OpenGL ES (1.0) отсутствующими, до этого времени, функциями (кроме glColor4f, в данной версии она сделана под определённую работу и занята), так же указаны не используемые функции версии 1.1
- дополнил OpenGL недостающими функциями, но немногими, очень много ещё отсутствует
!!! Внимание!!! Поддержка создания библиотек отключена!!! zglHeader.pas не редактирован, и возможно не пригоден для использования. Если хотите попробовать, берите его в версии 0.3.12 (так же надо будет восстанавлиать демо-версии как в версии 0.3.12)
Ещё одна причина отказа от поддержки LCL библиотек, это то, что я не запустил демо-версии на FPC + LCL.
(Но вот ZenFont(LCL) запустить удалось, так что возможно проблема где-то на поверхности).
- в демо-версии со звуком показано как остановить звуки, для их изначального воспроизведения. Звук теперь можно "передвигать" (в версии OpenAL)
- Множественные изменения в файлах, для облегчения кода и более корректной работы. (а возможно и нет...)
- Множественные изменения под разработку под Android. Изменён файл ZenGL.java, корректирована работа Android приложений под коснувшиеся изменения.
- ZenFont теперь можно запускать и под Delphi 7. Так же редактирована работа приложения, введены некоторые ограничения на работу приложения, для избежания ошибок при создании нового шрифта.
-----------------------------------------------------------------------------------------------------------------------
Дальнейшие планируемые изменения:
- Введение джойстиков/меню для Android, а так же возможность использовать меню и создавать своё меню для компьютеров.
- расширение OpenGL или возможность подключения dglOpenGL (будет возможность создавать умельцам как 3D- приложения, так и работы с шейдерами).
- после расширения OpenGL будет поддержка освещения и возможно тумана. И вероятно многое другое, что включено в OpenGL.
- доработка OpenAL. (если руки дойдут)
-----------------------------------------------------------------------------------------------------------------------
Прошу многих извинить!!! Но специально заниматься разработкой/доработкой под MacOS/iOS в данное время не буду. Так же специальной поддержкой DelphiXE заниматься не буду. Большинство примеров под Delphi 7 будут работать и под DelphiXE для Windows. Возможно, если DelphiXE поддерживает, будет поддержка Linux. Если DelphiXE поддерживает приложения под Linux, просьба сообщить мне об этом (сильного желания устанавливать эту среду программирования, нет).
Так же не буду продолжать поддержку DirectX, это в ваших руках, но на это так же надо потратить много времени.
Множество вопросов по работе с ZenGL решены и приведены в примерах. Примеры смотрите под Delphi 7, Lazarus и Android.
Под FP (без Lazarus), MacOS и iOS я не переделывал примеры, их можно так же переделать, подсмотрев в других примерах указанных выше.
До документации пока руки не дойдут, за это больше всего извиняюсь! На сайте zengl.org смотрите, там достаточно не мало информации.
-----------------------------------------------------------------------------------------------------------------------
Теперь относительно Android. Google отказалось от поддержки 32-х битных версий программ... а точнее программ, которые содержат 32-х битный код...
Это очередная долгая песня. Надо искать скомпилированные библиотеки под 64-х битную систему, и потому в данное время я этим заниматься не буду.
Если у вас есть данные библиотеками, то вы можете ими поделиться или поделиться ссылками на них. Потому что кроме самих библиотек, надо будет и настраивать компиляцию под 64-х битную систему и решать все выявляющиеся проблемы.
Меня устроит и 32-х битная система, так как она вполне запускается и на более поздних версиях телефонов и уж точно запустится на большинстве телефонов. )))
-----------------------------------------------------------------------------------------------------------------------
Все вопросы можете задавать на форуме сайта zengl.org , или задавая вопросы мне:
- почта
https://www.youtube.com/channel/UCn46Rn ... g/featured - канал на ютубе, выкладываю периодически видео может кому полезно будет. Ну, или так же на форумах, просматриваю темы, по возможности отвечаю (или отмечаю о недоработках для себя)
-----------------------------------------------------------------------------------------------------------------------
Новая версия выложена в шапке.
Представляю новую версию 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
я про видео конечно, смотреть его не возможно. Где стабилизация камеры, почему идут постоянные дергания. Ну можно же её поставить жестко.