IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

[NDK] EGL et shared context


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut [NDK] EGL et shared context
    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 :

    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);
    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
     
    EGLContext otherContext = eglCreateContext(m_display, m_config, sharedContext, contextAttribList);
    eglMakeCurrent(m_display, m_surface, m_surface, otherContext); //!\ Generate EGL_BAD_ACCESS error
    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...

    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.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut
    Bon, au final, j'ai laissé tombé le context sharing pour mon appli. A prioris, les constructeurs ont tous leur façon de supporter le context sharing, voir ne le supportent pas du tout. Donc je fais toutes mes opération openGL dans le main thread, tant pis pour le multithreading.

  3. #3
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    https://groups.google.com/forum/?fro...rs/k40o5j7ZQNc

    If ctx is current to some other thread, or if either draw or read are bound to contexts in another thread, an EGL_BAD_ACCESS error is generated.
    Ici la documentation
    http://www.khronos.org/registry/egl/...glspec.1.4.pdf

    bizarre que depuis 2009, ils n'ont pas corriger le pb :/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  2. [] plusieurs instances de form avec leur contexte ?
    Par Seb-31 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/04/2003, 13h56
  3. Context menu Windows - icone pour un item
    Par Cameleon45 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 07/03/2003, 13h48
  4. Context Menu - ( Code de P. Castelain )
    Par Cameleon45 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 06/03/2003, 22h33
  5. Context sous Tomcat
    Par EL MANSOURI dans le forum JBuilder
    Réponses: 5
    Dernier message: 28/01/2003, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo