Код Читати оригінал на Dev 1 хв читання 1

Codename One випустив API для кросплатформенної 3D-графіки

Open-source фреймворк Codename One представив новий пакет com.codename1.gpu, який дозволяє створювати кросплатформенну 3D-графіку без необхідності написання шейдерів вручну. Розробники пропонують абстрактний API, де додатки описують параметри матеріалів, а система автоматично генерує відповідний код для Metal на iOS, OpenGL ES на Android, WebGL у браузерах та Direct3D 11 на Windows. Це рішення дозволяє використовувати єдину кодову базу Java або Kotlin для відображення складних 3D-моделей на п'яти різних графічних бекендах.

Смартфон і планшет на яскраво-синьому тлі відображають тривимірні об'єкти: куб у червоно-зелену клітинку та металеву миску.
Смартфон і планшет на яскраво-синьому тлі відображають тривимірні об'єкти: куб у червоно-зелену клітинку та металеву миску. · Джерело зображення: Dev

За даними Dev, розробники Codename One впровадили інноваційний підхід до роботи з графічними процесорами, який радикально спрощує процес створення кросплатформенних додатків. Замість того, щоб програмісти мали писати окремі шейдери для кожної платформи — наприклад, MSL для Apple або HLSL для Windows — система тепер автоматично генерує необхідний код на основі високорівневого опису матеріалів.

Абстракція замість ручного написання шейдерів

Новий API фокусується на об'єкті Renderer та компоненті RenderView. Розробнику достатньо визначити модель освітлення, колір, текстуру та блиск матеріалу в коді Java або Kotlin. Система автоматично транслює ці дані у відповідні шейдери для різних бекендів:

  • Metal (CAMetalLayer) для нативних пристроїв iOS та Mac з підтримкою runtime-компіляції;
  • OpenGL ES 2 через GLSurfaceView для Android;
  • WebGL для веб-версій на базі JavaScript;
  • Direct3D 11 для нової нативної версії під Windows;
  • OpenGL або чистий Java-софтверний растеризатор для симуляторів.
  • Як зазначено в документації, цей підхід дозволяє інтегрувати 3D-елементи безпосередньо у стандартні інтерфейси додатків, де вони можуть знаходитися поруч із кнопками та мітками, зберігаючи при цьому повну сумісність із системою розмітки.

    Підтримка сучасних стандартів моделей

    Для роботи з реальними об'єктами фреймворк включає GltfLoader. Він підтримує бінарний формат .glb, який є стандартом для Blender та більшості сучасних інструментів 3D-моделювання. Це означає, що одна й та сама модель може бути додана як ресурс проекту і коректно відображатися на будь-якій платформі без додаткових модифікацій.

    Особливою перевагою є підтримка симулятора JavaSE. У разі відсутності OpenGL система використовує повноцінний програмний растеризатор з буфером глибини та коректною перспективою. Це гарантує детермінованість рендерингу навіть на headless CI-машинах, що критично важливо для автоматизованого тестування скріншотів.

    Завдяки такому підходу Codename One значно знижує бар'єр входу для створення складних візуальних інтерфейсів у кросплатформенній розробці.

Контекст для України

Для українських розробників цей інструмент може стати важливим рішенням при створенні кросплатформенних продуктів з мінімальними витратами на підтримку коду. Оскільки багато українських студій працюють над мобільними додатками та веб-сервісами одночасно, можливість використовувати єдину базу Java/Kotlin для 3D-графіки економить час на найму спеціалістів із різних графічних стеків. Доступність бібліотеки як open-source проекту дозволяє українським контриб'юторам брати участь у розвитку ядра та адаптувати його під локальні потреби.

Часті запитання

Чи потрібно писати шейдери вручну для різних платформ у Codename One?
Ні, новий API пропонує абстракцію, де розробнику достатньо описати параметри матеріалів (колір, текстуру, блиск) у коді Java або Kotlin. Система автоматично генерує відповідний код для Metal на iOS, OpenGL ES на Android, WebGL у браузерах та Direct3D 11 на Windows.
Які формати моделей підтримує новий фреймворк?
Фреймворк включає GltfLoader, який підтримує бінарний формат .glb. Це стандарт для Blender та більшості сучасних інструментів 3D-моделювання, що дозволяє використовувати одну модель як ресурс проекту для відображення на будь-якій платформі без додаткових модифікацій.
Telegram

Свіжі новини у нашому Telegram

Отримуйте миттєві сповіщення про нові публікації в рубриці «Код»

@procodeandevenmore