Kann nicht glGenTextures auf Multithread-Android-App aufrufen

Ich erstelle eine OpenGLES-Android-App mit Android NDK und erweitere sie aus dem Beispiel von AndroiHie

Es wird GLSurfaceView verwendet. Texturen werden in einer JNI-Funktion initialisiert, die von onSurfaceChanged () von GLSurfaceView.Renderer @ aufgerufen wir

Wenn der Benutzer den Bildschirm berührt, benötigt die App mehr Texturen. Zu diesem Zweck wird glGenTextures () in einer JNI-Funktion aufgerufen, die in onTouchEvent () aufgerufen wird.

Das Problem ist, dass die Thread-ID (die gettid () zurückgibt) völlig willkürlich zu sein scheint und nicht immer mit der Thread-ID übereinstimmt, die den OpenGL-Kontext enthält.

It wird geladen und zeigt Texturen an, wenn die JNI-Funktion im selben Thread aufgerufen wird, schlägt jedoch fehl, wenn sie sich in einem anderen Thread befindet. Also handelt es sich ganz zufällig.

Kann ich etwas machen wie:

share den OpenGL-Kontext, so dass ich glGenTextures () in jedem Thread erfolgreich aufrufen kann.

make onTouchEvent () darf nur in einem Thread aufgerufen werden, der den OpenGl-Kontext hat

der irgendetwas, was ich zum Laufen bringen ka

?

Vielen Dan

Antworten auf die Frage(8)

Ihre Antwort auf die Frage