# ZenGL version 3.27 + MacOS Cocoa - beta version [zengl](https://zengl.org) - изначальный сайт создателя библиотеки. **ZenGL** - это бибилотека создающая контекст окна для работы с OpenGL на разных платформах. **Среда разработки** - Lazarus/FreePascal - Delphi **Поддерживаемые платформы для Lazarus/FreePascal:** - Windows 32/64 - Linux 32/64 - Android - MacOS Cocoa - beta version - *MacOS Carbon (не проверено используйте версию 3.12 если не будет работать)* **Поддерживаемые платформы для Delphi:** - Windows 32 (вероятно некоторые демо-версии будут работать и с Windows 64, но точно не все) [zengl for iOS](https://github.com/skalogryz/zengl) - версия которая поддерживает iOS (мною не проверено). *** В данной версии корректирована работа с VCL/LCL (для Delphi не была создана демка, код можно скопировать из проекта Lazarus) !требуется проверка! Введено ограничение по FPS до 30 кадров в секунду. Для изменения FPS введена процедура **scr_SetFPS(FPS: Byte)**. При FPS > 60 включается вертикальная синхронизация, во избежание проблем с разными видеокартами. !Внимание! Эта процедура и вертикальная синхронизация не одно и то же!!! Редактированы демки (надеюсь все). На данное время удалены не используемые демки. Для Windows 64 решена проблема вывода видеофайла. *** Введены функции для работы с таймерами. создание таймера: - function timer_Add(OnTimer: Pointer; Interval: Cardinal; Flags: Byte; SleepInterval: Cardinal = 5): Byte; Flags - указывает какой таймер запускаем. Start/Stop - таймер запуска/остановки. SleepToStart/SleepToStop - таймер с задержкой в установленное время (секунды), задержка указана в SleepInterval. На выходе будет номер таймера. Максимальное количество таймеров 20. удаление таймера: - procedure timer_Del(var num: Byte) - где "num" номер таймера который надо удалить Запуск/остановка уже созданного таймера: - function timer_StartStop(num: Byte; Flags: Byte): Boolean - "num" номер таймера, "Flags" флаг Start или Stop Запуск/остановка созданного таймера с установленной задержкой: - function timer_SleepStartStop(num: Byte; Flags: Byte; IntervalSleep: Cardinal = 1): Boolean - "IntervalSleep" заданный интервал в секундах *** Введены функции для работы с несколькими шрифтами (фонтами) не более 5 разных (можно увеличить изменяя константу). Функции загрузки шрифтов возвращают номер загруженного шрифта. Вы его должны сохранить в переменной и работать с ним. - procedure setTextScale(Index: LongWord; fnt: Byte) - устанавливает размер (шкалу) шрифта, измеряется в пикселах! - function getTextScale(fnt: Byte): LongWord; - возвращаетразмер (шкалу) шрифта. работают от заданного шрифта!!! Обратить на это внимание! 17-я демка доработана для всех ОС(возможны проблемы в работе с самим приложением) но только под клавиатуру, под Android не сделано на данное время. -- необходимо включить дефайн в файле конфигурации USE_MENUGUI *** Для MacOS много не доделано, но оснавная часть работает. 3-я демка работает, но нельзя вводить текст (буду решать для всей библиотеки!) 4-я демка - работает не стабильно. Решить для MacOS не знаю как, но основные режимы работают, поэтому используйте через перезагрузку приложения. 12-я демка не работает, так как подобный рендеринг для MacOS Cocoa считается устаревшим. 15-я и дальнейшие демки не работают. Библиотеки для видео и физики требуют полной переработки, так как в ZenGL были использованы довольно старые библиотеки. Видео возможно запустится, но для этого надо скомпилировать файлы в папке "yuv2rgba". 18-я демка... извиняюсь, но LCL(для MacOS Cocoa) не будет поддерживаться вообще. Если есть желание, можете предложить решение для LCL, и я его использую. Введена процедура **procedure gl_SetCoreGL(mode: Byte);** **mode** принимает значения CORE_2_1, CORE_3_2,CORE_4_1 - поэтому умельцы, могут включить нужный им OpenGL и работать именно с ним. **устанавливать значение надо до создания окна!!!** **необходимо проверить триангуляцию!!!**, у меня она не работает. Если вы используете BigSur или CPU не x86_64 то вам надо: установить библиотеки с сайта [Homebrew](https://formulae.brew.sh/formula/ "Homebrew") - zlib - libzip - libogg - vorbis и если знаете как запустить 15-ю и 16-ю демо-версии, то: - theora - chipmunk в файле "zgl_config.cfg" выставить Code: {$DEFINE MAC_COCOA} и выключить Code: {$IFDEF MAC_COCOA} {$DEFINE NO_USE_STATIC_LIBRARY} // -> {.$DEFINE NO_USE_STATIC_LIBRARY} {$ENDIF} Если все библиотеки будут установлены по умолчанию, то демо-версии должны заработать. *** Введена функция очистки экрана procedure scr_SetClearColor(flag: Boolean; Color: Cardinal = 0); flag - будет производится очистка или нет, Color - цвет очистки в формате RRGGBB