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 :

Rendu opengl multi-thread


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Rendu opengl multi-thread
    Bonjour,

    J'aimerais multi threader le calcul sur les textures et le rendu pour ne pas avoir de blocage pendant les calculs lors d'un évènement clavier.

    j'ai donc un

    boucle while {
    gestion des évéments clavier
    }

    un thread de rendu
    un thread de calcul

    comment faire pour que sa marche j'ai essayer avec les exemple données comme par exemple le TriangleActivity mais sa ne marche pas

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour

    pour le multi-thread , j'ai trouver la réponse sur le forum de khronos , la réponse n'ai pas propre a android d'ailleurs sa concerne plutôt egl

    il faut faire un eglMakeCurrent(NULL, NULL); pour libérer le surface et le context avant de lancer le thread de rendu

    par exemple en partant du coder donner par google GLView.java

    remplacer par le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mRenderer.drawFrame(gl);
    mEglHelper.swap();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mEglHelper.destroyContext();
    if (this.myThreadRender == null) {
    this.myThreadRender = new MyThreadRender();
    this.myThreadRender.start();
    }
    le code de la fonction destroyContext
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void destroyContext() {
    this.m_egl.eglMakeCurrent(this.m_eglDisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT)) ;
    }
    le code du thread

    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
    20
    21
    22
    23
    24
     
    class MyThreadRender extends Thread {
      GL10 m_glRender = null;
      public MyThreadRender() {
        super();
      }
     
      @Override
      public void run() {
        if (m_glRender == null) {
          mEglHelper.makeCurrent();
          m_glRender = mEglHelper.getCurrent();
        }
        try {
          while (true) {
            mRenderer.drawFrame(glRender);
            mEglHelper.swap();
          }
        } catch (InterruptedException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
    le code de getCurrent de makeCurrent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public GL10 getCurrent() {
      return ((GL10) m_eglContext.getGL());
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void makeCurrent() {
      m_egl.eglMakeCurrent(m_eglDisplay, m_eglSurface, m_eglSurface, m_eglContext)) ;
    }

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (true) {
            mRenderer.drawFrame(glRender);
            mEglHelper.swap();
    }
    N'est il pas préférable d'utiliser un "Animator" pour gérer l'actualisation continue du rendu ?
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    A ma connaisance je n'ai pas trouvé de class Animator pour android . Cette class exite en java en m3g si ma mémoire est bonne mais pas pour android

  5. #5
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Peut être à partir de la classe "Animation" :
    http://markmail.org/message/ff4uttrjpi7tjnrg
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Rendu OpenGL sur un thread tier.
    Par Groove dans le forum OpenGL
    Réponses: 3
    Dernier message: 15/02/2007, 11h36
  3. Rendu OpenGL offscreen sous Windows
    Par rincevent_123 dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/11/2003, 09h23
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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