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

OpenGL Discussion :

[JOGL] - equivalent des pointeurs sur fonction


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut [JOGL] - equivalent des pointeurs sur fonction
    Bonsoir,

    je reprends des anciens TPs sur OpenGL. A l'époque on avait fait ça en C, et je porte les exemples de code en java avec JOGL.

    Les exercices en C étaient faits avec glut, et il était donc possible de passer un pointeur vers une fonction pour définir la fonction à appeler pour un callback donné (myDisplay pour l'affichage par exemple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glutDisplayFunc(myDisplay);
    Avec java, je ne vois pas bien comment faire l'équivalent. J'ai pensé à l'introspection, qui permet de donner le nom d'une méthode à appeler sur un objet, mais j'ai peur que ça soit couteux. Pour l'instant j'ai fixé un attribut de type integer à une valeur différente selon la fonction à appeler et à chaque passage dans la fonction (display par exemple) je teste la valeur de cet entier et j'appelle la bonne fonction.
    De la même manière, je pense que ce n'est pas la meilleure méthode.

    Avez-vous une idée sur la façon de s'y prendre ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    En objet, l'équivalent du pointeur de fonction est le foncteur (je crois que c'est le terme officiel). Au lieu de passer un pointeur, on passe un objet implémentant une interface donnée, l'interface ayant le rôle du type du pointeur de fonction.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface ISumFunc {
        double add(double a, double b);
    }

    Ensuite on peu créer des classes qui l'implémentent, ou même passer directement par des classes anonymes :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ISumFunc adder = new ISumFunc() {
       public double add(double a, double b) {
          return a+b;
       }
    };
     
    return fonctionUtilisantISumFunc(adder);

    Par contre je ne sais pas si le portage Java de Glut utilise cette méthode. Une recherche Java me laisse plutôt l'impression que c'est de l'introspection. Pour cette utilisation, l'introspection ne devrait pas poser de problème de performance : ça n'est pas si lent que ça, et le nombre d'appels reste raisonnable.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    L'idée d'une interface pour résoudre ce problème me semble pas mal du tout.
    En faisant comme ça les appels ne seront effectivement pas très nombreux.
    Cela dit, je ferai sans doute des mesures pour avoir le cœur net à propos de l'introspection.

    Merci pour ta réponse.

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/03/2012, 00h26
  2. Map contenant des pointeurs sur des fonctions membres
    Par Bash01 dans le forum Débuter
    Réponses: 1
    Dernier message: 18/05/2010, 15h06
  3. Transtypages sur des pointeurs de fonction
    Par gege2061 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 05/01/2007, 15h01
  4. Réponses: 12
    Dernier message: 30/06/2006, 16h46
  5. [Language]Equivalent Java des pointeurs de fonctions du C/C++
    Par Thierry Chappuis dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2005, 15h14

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