Я делаю Android-приложение OpenGLES, используя Android NDK, расширяясь от примера gljni для Android, который можно найти здесь
Он использует GLSurfaceView.Текстуры инициализируются в функции JNI, вызываемой из onSurfaceChanged () из GLSurfaceView.Renderer
Когда пользователь касается экрана, приложению требуется больше текстур.Для этого вызывается glGenTextures () в функции JNI, вызываемой в onTouchEvent ().
Проблема в том, что идентификатор потока (который возвращает gettid ()) кажется совершенно произвольным и не всегда одинаковым дляидентификатор потока, который имеет контекст OpenGL.
Он загружает и показывает текстуры, если функция JNI вызывается в том же потоке, но завершается ошибкой, если он находится в другом потоке.Так что он действует совершенно случайно.
Могу ли я сделать что-то вроде:
использовать контекст OpenGL, чтобы я мог успешно вызывать glGenTextures () в любом потоке.
сделать так, чтобы onTouchEvent () вызывался только в одном потоке с контекстом OpenGl
или во всем, что я могу заставить его работать
?
Спасибо