A 2D cross platform game development framework/library for the freepascal compiler and delphi

#pascal #freepascal #gamedev #library #framework #engine #delphi

Seenkao 0111a823c5 Update zgl_fx.pas 2 роки тому
Zengl_SRC 0111a823c5 Update zgl_fx.pas 2 роки тому
README.md 7d2cbe3258 Update README.md 4 роки тому

README.md

ZenGL version 3.27 + MacOS Cocoa - beta version

zengl - изначальный сайт создателя библиотеки.

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 - версия которая поддерживает 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

  • 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