====== Xtreme3D 4.0 ====== Четвертое поколение [[Xtreme3D]], графического движка для [[GameMaker]]. В настоящее время находится в разработке. [[https://github.com/xtreme3d/xtreme3d/tree/4.0|Репозиторий проекта]] **Текущий статус:** второй этап разработки первой версии (Milestone II), альфа-тестирование ===== История ===== В 2022 году [[GameMaker|GameMaker Studio 2]] полностью перешел на 64-битную архитектуру, вследствие чего потерял совместимость со старыми 32-битными расширениями. Для того, чтобы продолжить поддержку классической связки Xtreme3D+GameMaker, было решено портировать Xtreme3D на современный Delphi и актуальную версию [[GLScene]]. Поскольку порт частично ломает обратную совместимость, он будет развиваться в рамках новой ветки Xtreme3D - 4.x. В обозримом будущем обе ветки будут поддерживаться параллельно. Xtreme3D 4.0 пишется на Delphi 10 и выше с использованием библиотеки GLScene 2.2. Будет поддерживаться только 64-битная архитектура и (пока) только ОС Windows. Проект осуществляется в два этапа. На первом были реализованы базовые функции-врапперы, основанные на встроенных классах GLScene, и выпущена [[https://github.com/xtreme3d/xtreme3d/releases/tag/v4.0.0-alpha.1|первая альфа-версия]]. На втором будут реализованы аналоги тех возможностей, для которых пришлось добавлять новые классы и менять методы встроенных. По итогам II этапа будет выпущена вторая альфа-версия, на основе которой затем будет подготовлен релиз Xtreme3D 4.0.0. Также на II этапе будет подготовлен биндинг для Python 3. Если все пройдет успешно, затем выйдет версия 4.1, в которой будут добавлены врапперы некоторых новых классов GLScene 2. Дорожная карта разработки: * ✔️ **Milestone I** (2022-2023) * ⏳ **Milestone II** (2023-2024) * ⏳ **Xtreme3D 4.0.0** (ориентировочно начало 2025 года) * ⏳ **Xtreme3D 4.1.0** (середина-конец 2025 года) ===== Отличия от Xtreme3D 3.9 ===== Большинство функций движка остаются без изменений. Изменения, ломающие обратную совместимость, перечислены ниже. * Функция TrisRendered удалена * Функция ViewerGetPickedObjectsList теперь работает с объектами-списками PickList, которые нужно создавать вручную * Функция CameraZoomAll теперь требует указания Viewer во втором параметре * Функция SpriteNoZWrite удалена, используйте вместо нее MaterialSetDepthWrite * Функция MaterialCullFrontFaces удалена * Функции Polygon удалены * Функции TextRead, TextConvertANSIToUTF8 удалены * Функция OdeAddCone удалена * Переделана система TextureEx у материалов. Удалены функции MaterialLoadTextureEx, MaterialSetTextureEx, MaterialSetTextureExFromLibrary, MaterialGenTextureEx, MaterialEnableTextureEx * Переделана система FBO. Удалены функции FBOSetViewer, FBORenderObject, FBORenderObjectEx, FBOSetOverrideMaterial, FBOSetColorTextureFormat. FBO теперь лучше интегрирован в граф сцены. * Изменился смысл функции EngineSetMaxLights. Теперь она задает максимальное количество источников света, которые учитываются основной системой освещения и системой LightFX. По умолчанию это количество равно 8 (максимум для основной системы освещения). Если вы хотите использовать больше источников света для системы LightFX, нужно использовать эту функцию.