Когда-то попробовал сделать подобное, только в native окружении (в первую очередь речь идет о Android).
Вот что получилось.
Идея такова, чтобы основная часть приложения, которая отвечает за отображение OpenGL контекста и всю логику, была достаточно производительной, поэтому был выбран C++, после удалось вставить это все в виде .so библиотеки (правда для ее связывание без сотни строк на стороне Java и C++ не обошлось).
Как итог - основная часть 3D приложения разрабатывается отдельно от платформозависимой.
Спустя время решил вернуться к работе над этим, но уже идея с разработкой native части под андроид уже не кажется такой интересной (хотя потом планируется и под iOS).
И раньше рассматривал различные фреймворки для создания гибридных приложений, например Cordova или React Native. Первый точно отпадает в силу своей нерасторопности. По второму даже не нашел каких-то доводов о том, почему не стоит его использовать, попробовал простые примеры - все ок.
Но в первую очередь задача следующая - внедрить в приложение нативный компонент, который должен самостоятельно работать с Surface'ом. Если в проверенном случае из Java все равно необходимо было стартовать рендеринг и делиться событиями, то здесь все еще хуже: например, вот
реализация canvas . 1000 строк, Карл! + еще не до конца ясно как это работает.
Кто-то решал подобную задачу с React Native, есть ли попроще примеры связывания нативной части с RN? Или есть другие более дружелюбные в этом плане инструменты?