Salut ici,
J'essaye de charger des resources openGL, comme les texture, shader et mesh sur un thread différent du thread principal où je fais mon rendering.
Pour ça, je créé un shared context grâce à la lib EGL, sauf que j'ai une erreur que je devrais théoriquement pas avoir. (sauf si j'ai mal saisi la démarche.)
Je procède comme suis :
Ensuite, plus loin, je créé un nouveau thread. Depuis ce thread, je créé un nouveau context à partir du shared context, et avec les même display, surface, config et attribute que le thread principal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 // Les variables nécessaire au context sont déjà créé, je les remet ici pour la suite EGLConfig m_config; // configuration valide EGLSurface m_surface; // surface proprement créé EGLDisplay m_display; // mon display // Context attributes static const EGLint contextAttribList[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; EGLContext sharedContext; // Le shared context, qui ne sera jamais mis current (aucun appel a eglMakeCurrent dessus) EGLContext mainContext; // Le contexte principal pour le rendu sharedContext = eglCreateContext(m_display, m_config, EGL_NO_CONTEXT, contextAttribList); mainContext = eglCreateContext(m_display, m_config, sharedContext, contextAttribList); eglMakeCurrent(m_display, m_surface, m_surface, mainContext);
J'ai une erreur EGL_BAD_ACCESS, sauf que le context "otherContext" n'a jamais été mis current avant l'appel a eglMakeCurrent ci-dessus, et le shared context n'est pas non plus current, donc il ne devrait pas avoir de problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 EGLContext otherContext = eglCreateContext(m_display, m_config, sharedContext, contextAttribList); eglMakeCurrent(m_display, m_surface, m_surface, otherContext); //!\ Generate EGL_BAD_ACCESS error
J'utilise un samsung galaxy tab 2.0 7" pour faire mes essais. Est-ce que quelqu'un sait me dire pourquoi ça déconne? Quel solution pour régler ça? J'ai lus des truc sur EGLImage, sauf qu'EGLImage ne concerne que les images, et je vais avoir d'autres type de ressources à générer en plus des textures.
Partager