Как интегрировать C++ OpenGL приложение в React Native?

Когда-то попробовал сделать подобное, только в native окружении (в первую очередь речь идет о Android). Вот что получилось.

Идея такова, чтобы основная часть приложения, которая отвечает за отображение OpenGL контекста и всю логику, была достаточно производительной, поэтому был выбран C++, после удалось вставить это все в виде .so библиотеки (правда для ее связывание без сотни строк на стороне Java и C++ не обошлось).
Как итог - основная часть 3D приложения разрабатывается отдельно от платформозависимой.

Спустя время решил вернуться к работе над этим, но уже идея с разработкой native части под андроид уже не кажется такой интересной (хотя потом планируется и под iOS).

И раньше рассматривал различные фреймворки для создания гибридных приложений, например Cordova или React Native. Первый точно отпадает в силу своей нерасторопности. По второму даже не нашел каких-то доводов о том, почему не стоит его использовать, попробовал простые примеры - все ок.
Но в первую очередь задача следующая - внедрить в приложение нативный компонент, который должен самостоятельно работать с Surface'ом. Если в проверенном случае из Java все равно необходимо было стартовать рендеринг и делиться событиями, то здесь все еще хуже: например, вот реализация canvas . 1000 строк, Карл! + еще не до конца ясно как это работает.

Кто-то решал подобную задачу с React Native, есть ли попроще примеры связывания нативной части с RN? Или есть другие более дружелюбные в этом плане инструменты?
  • Вопрос задан
  • 414 просмотров
Решения вопроса 1
Ni55aN
@Ni55aN Автор вопроса
React Native в этом плане удивил)) Удалось вставить нативный GLSurfaceView без каких-либо проблем.
Github@React-native-OpenGL-native-example

Есть пример в ветке minimal с простым Renderer'ом, а в master уже с .so библиотекой, которая собрана когда-то проверенным способом

Итог: React Native без проблем взаимодействует с нативной частью и позволяет не только манипулировать простыми данными, но и встраивать нативные элементы
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы