Aller au contenu

[résolu] Comment créer un EGLContext dans un nouveau thread avec un eglswap fonctionnelle?


BladeRunner

Recommended Posts

bonjour,

Je voudrais créer une application multithreadé OpenGL ES2 (développée en JNI).

Pour ce faire, je crée mon thread avec la bibliothèque pthread en utilisant la fonction

 pthread_create (& thread_render, NULL, (void *(*)( void *)) renderLoop, NULL);

Voici le code de renderLoop() fonction de 'callback':

renderLoop void () {
while (m_start) {
glClearColor (1, 0, 0, 1.0f);
checkGlError ("glClearColor");
glClear (GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
checkGlError ("glClear");
LOGI («swap avant");
eglSwapBuffers (engine.eglDisplay, engine.eglSurface);
checkEglError ("eglSwapBuffers");
LOGI («swap apres");
}
}

L'application crash lors de l'appel eglSwapBuffers (engine.eglDisplay,engine.eglSurface);

Avez-vous une idée pour résoudre le problème?

merci:)

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

j'ai trouvé

il faut mettre dans le nouveau thread

eglMakeCurrent(engine.eglDisplay, engine.eglSurface, engine.eglSurface, engine.eglContext);

et dans le thread principal une fois que toute les opérations egl et opengl finit

eglMakeCurrent(engine.eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);

a+

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...