OpenGL на Android: любые конфликты при вызове функций OpenGL как на Java, так и на C ++?

В моем приложении я использую стороннее пользовательское представление, которое вызывает функции OpenGL в Java, и я также вызываю функции OpenGL в своем собственном C ++-коде.

Должно ли это быть проблемой?

Есть ли риск, что они могут быть вызваны одновременно?

Каков порядок потоков вызовов OpenGL через java / c ++?

Это не должно быть проблемой, если вы знаете, что делаете. Java-привязки OpenGL в Android в основном просто вызывают одну и ту же функцию c ++. В этих вызовах нет больше логики. Таким образом, вы можете в принципе думать об этих вызовах так же, как если бы они были прямым кодом c ++.

Проблема, с которой вы, скорее всего, столкнетесь, будет заключаться в том, что OpenGL не является потокобезопасным, если у вас есть только один контекст. Поэтому, если два потока пытаются вызвать методы gl в том же контексте (что обычно имеет место только в одном приложении), это вызовет проблемы. Вы можете отказаться от этих проблем, вызвав eglMakeCurrent, чтобы сделать текущий поток текущим потоком OpenGL. И тогда вы можете сделать свои звонки как обычно.

Вы не можете получить доступ к одному контексту OpenGL из разных потоков. Но законно смешивать C ++ и Java, последние – только обертки для собственных вызовов.

Всегда есть проблемы с вызовом одной и той же функции из нескольких потоков, если эта функция изменяет некоторый глобальный объект.

Вы можете вызывать OpenGL как с Java, так и с C ++, неуверенный, если он должен быть в одном и том же потоке.
В игре я написал, что сделал весь рендеринг в C ++, но загрузил текстуры в Java (поскольку java имеет доступ к классу R), класс C ++ вызывал бы функцию java, которая загружала текстуры.

Intereting Posts
«Android.view.View не может быть исключен из исключения android.view.ViewGroup» Макет по умолчанию для ArrayAdapter Ошибка раздувания класса android.webkit.WebView происходит спорадически в производстве Как удалить оттенок цвета чертежей в NavigationView? Кнопка добавления, например, «Новая почта» в приложении Gmail. Поддержка PAC отключена, поскольку нет реализации системы Запуск приложения Android с ошибками студии Android: фатальный сигнал 13 Код SIGPIPE -6 Сохранить ArrayList для файла на Android Thread.sleep останавливает все вложенные Asyntasks Не удалось найти следующие классы: – android.support.design.widget.TextInputLayout Android Bitmap: конвертировать прозрачные пиксели в цвет Общий идентификатор пользователя Android и чтение / запись файла Определение зависимостей для нескольких вариантов Андроидная загрузка данных асинхронно с точки зрения пейджера Панель инструментов Android appcompat растягивается, когда searchview получает фокус