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 :

opengl ES avoir un bon ratio avec l'ecran


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut opengl ES avoir un bon ratio avec l'ecran
    Bonjour,

    Avec Opengl ES, en utilisant une matrice de projection et de view, on obtient des formes aux bonnes proportions à l'affichage.

    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
     
          @Override
            public void onSurfaceChanged(GL10 glUnused, int width_, int height_) {
     
                width = width_;
                height = height_;
                float ratio = width / height;
                final float left = -ratio ;
                final float right = ratio ;
                final float bottom = -1.0f;
                final float top = 1.0f;
                final float near = 1.0f;
                final float far = 10.0f;
     
                GLES20.glViewport(0, 0, width_, height_);
                Matrix.frustumM(mProjectionMatrix, 0, left, right, bottom, top, near, far);
     
     
            }
    Cependant, l'unité originel est modifiée : avant la projection, la largeur comme la longueur de l'écran valait 1f ( impliquant une forme tirée ).

    Savez vous comment obtenir les bonnes valeurs de largeur et longueur de l'écran après cette projection ?

    Merci si vous pouvez m'aider.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ou savez vous s'il existe tout simplement un moyen de faire une projection 2D simple avec opengl ES?

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ok, je vais essayer de m'exprimer différement.

    J'ai besoin de dessiner une interface fixe 2D sur un fond aussi en 2D, mais qui bouge. J'ai besoin aussi que ces 2 éléments soient sur une même surface afin bien dissocier le toucher ( interface/jeux ).

    J'arrive sans problème a dissocier les 2 avec un translate de la caméra, mais, c'est vraiment idiot, je n'arrive pas a trouver les coordonnées exactes de l’écran ( après la projection et la création de la caméra ) afin d'ajuster parfaitement mon interface.

    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
     
     
       @Override
        public void onDrawFrame(GL10 glUnused) {
                drawing = true;
                GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
                Matrix.setIdentityM(mViewMatrix, 0);
                GLES20.glClearColor(1f, 1f, 1f, 1f);
                GLES20.glEnable(GLES20.GL_BLEND);
                GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
     
                Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
                Matrix.translateM(mViewMatrix, 0, x, y, z);
     my ; yy > ly ; yy -- ){
                for ( Sprite w : world ){
                    drawSprite(w);
                }
                Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
             for ( Sprite h: hud){
                    drawSprite(h);
                }
            }

    Avec vous une idée de comment résoudre ce problème ?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ok, j'ai trouvé ( merci quand même ).
    C'est effectivement très bête.

    Il suffit de retrouver quel float de la matrice est bien coordonné, dans mon cas c'est le
    n°10.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/09/2007, 18h50
  2. Réponses: 2
    Dernier message: 17/05/2007, 00h44
  3. Comment avoir un bon référencement Google ?
    Par batama dans le forum Référencement
    Réponses: 12
    Dernier message: 21/04/2006, 10h42
  4. getParent() ne retourne pas le bon parent avec JMenuItem
    Par kesiahlex dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/04/2006, 15h19
  5. [JBOSS] Bon fonctionnement avec un warning?
    Par knelle dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 30/01/2006, 13h45

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