Это старая версия документа!
Xtreme3D 4.0
Четвертое поколение Xtreme3D, графического движка для GameMaker. В настоящее время находится в разработке.
Текущий статус: бета-тестирование, обновление документации
История
В 2022 году GameMaker Studio 2 полностью перешел на 64-битную архитектуру, вследствие чего потерял совместимость со старыми 32-битными расширениями. Для того, чтобы продолжить поддержку классической связки Xtreme3D+GameMaker, было решено портировать Xtreme3D на современный Delphi и актуальную версию GLScene. Поскольку порт частично ломает обратную совместимость, он будет развиваться в рамках новой ветки Xtreme3D - 4.x. В обозримом будущем обе ветки будут поддерживаться параллельно.
Xtreme3D 4.0 пишется на Delphi 10 и выше с использованием библиотеки GLScene 2.2. Будет поддерживаться только 64-битная архитектура и (пока) только ОС Windows.
Проект осуществляется в два этапа. На первом были реализованы базовые функции-врапперы, основанные на встроенных классах GLScene, и выпущена первая альфа-версия. На втором были реализованы аналоги тех возможностей, для которых пришлось добавлять новые классы GLScene и менять методы встроенных. По итогам II этапа была выпущена вторая альфа-версия. Также на II этапе был подготовлен биндинг для Python 3.
Дорожная карта разработки:
- ✔️ Milestone I (2022-2023)
- ✔️ Milestone II (2023-2024)
- ✔️ Xtreme3D 4.0.0 beta (начало 2025 года)
- ⏳ Xtreme3D 4.0.0 (ориентировочно лето 2025 года)
- ⏳ Xtreme3D 4.1.0 (ориентировочно конец 2025 года)
Отличия от Xtreme3D 3.9
Большинство функций движка остаются без изменений. Изменения, ломающие обратную совместимость, перечислены ниже.
- Функция Update теперь EngineUpdate
- Изменился смысл функции EngineSetMaxLights. Теперь она задает максимальное количество источников света, которые учитываются основной системой освещения и системой LightFX. По умолчанию это количество равно 8 (максимум для основной системы освещения). Если вы хотите использовать больше источников света для системы LightFX, нужно использовать эту функцию
- Функция TrisRendered удалена
- Функция ViewerGetPickedObjectsList теперь работает с объектами-списками PickList, которые нужно создавать вручную
- Функция CameraZoomAll теперь требует указания Viewer во втором параметре
- Функция SpriteNoZWrite удалена, используйте вместо нее MaterialSetDepthWrite
- Функция MaterialCullFrontFaces удалена
- Функция MaterialSetZWrite теперь MaterialSetDepthWrite
- Переделана система TextureEx у материалов. Удалены функции MaterialLoadTextureEx, MaterialSetTextureEx, MaterialSetTextureExFromLibrary, MaterialGenTextureEx, MaterialEnableTextureEx
- PtrToReal теперь PointerToReal
- Функции Polygon удалены
- Функции TTFontSetEncoding, TTFontLoadCodePage удалены
- Функции TextRead, TextConvertANSIToUTF8 удалены
- Функция OdeAddCone удалена
- Переделана система FBO. Удалены функции FBOSetViewer, FBORenderObject, FBORenderObjectEx, FBOSetOverrideMaterial, FBOSetColorTextureFormat. FBO теперь лучше интегрирован в граф сцены.