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 :

OpenGLES (android) Z-Order inactif


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 27
    Par défaut OpenGLES (android) Z-Order inactif
    Bonjour à tous, je débute en programmation Opengl.
    Je développe actuellement un petit test technique sous Android (en opengl ES du coup, la version light d'open gl).

    J'ai créée à la main un terrain (en utilisant la methode de la heightmap), (j'ai codé l'objet moi-meme avec des vertex).

    Au centre de mon terrain j'ai une sorte de petite montagne.
    Mon soucis est que cette montagne passe derriere le reste de mon terrain selon l'angle. En gros, quand je tourne autour, elle n'est visible que lorsque les polys derriere sont affichées avant. Donc le ZOrder ne fonctionne pas du tout, il n'y a aucun test de profondeur de la part d'opengl pour verifier quel poly est visible ou pas devant ses voisins.



    est-ce que c'est normal? est ce que je dois Enable des fonctions de GL spécifiques pour activer cette fonction? toute aide est la bienvenue, merci !

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Dans OpenGL "normal", il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glEnable(GL_DEPTH_TEST);
    Ça doit être la même chose avec ES

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 27
    Par défaut
    Oui deja fait, cette méthode n'a aucun effet sur la scene.
    Est-ce qu'une autre méthode peut potentiellement la desactiver uo avoir un effet de bord dessus ?

    J'ai cru voir que GL_BLEND enabled pouvait desactiver le calcul du depth. Du coup je l'ai desactivé, mais ça ne change rien.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Par défaut
    Essaye aussi de mettre glDepthMask(1.0) et glDepthRange(0.0, 1.0).
    (Si ça ne fonctionne pas essayes d'inverser les arguments du DepthRange ou de mettre -1.0, car j'ai rencontré ce genre de bug en programmant sur PSP...)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 27
    Par défaut
    OK, ajouté, ça ne change rien.
    J'ai commenté bcp de code pour pouvoir gérer mon probleme une bonne fois pour toute. Voici mon code actuel (au nvieau de l'affichage de la scene, pas des objets)

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    		// CONFIG CAMERA/VIEWPORT ////////////////////////////////////////////////////////////////////////////
    		gl.glViewport(0, 0, width, height);
     
    		gl.glMatrixMode(GL10.GL_PROJECTION);
    		gl.glLoadIdentity();
     
    		float ratio = (float) width / height;
    		GLU.gluPerspective(gl, 85.0f, ratio, .2f, 50);
     
     
    		// CONFIG WORLD ////////////////////////////////////////////////////////////////////////////
    		gl.glClearColor(.55f, .5f, .8f, 1);
     
    		gl.glEnable(GL10.GL_DEPTH_TEST);
    		gl.glDepthMask(true);
    		gl.glDepthRangef(.1f, 100f);
     
    		gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
     
    		gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    		gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
     
    		// CONFIG TEXTURES ////////////////////////////////////////////////////////////////////////////
    		int[] textures = new int[1];
    		gl.glGenTextures(1, textures, 0);
     
    		_textureID = textures[0];
    		gl.glBindTexture(GL10.GL_TEXTURE_2D, _textureID);
     
    		gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
    		gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
    		gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
    		gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
     
    		// Configuration du système de texture
    		gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);
     
     
    		// AFFICHAGE SCENE ////////////////////////////////////////////////////////////////////////////
    		gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
     
    		gl.glDisable(GL10.GL_BLEND);
    		gl.glEnable(GL10.GL_DEPTH_TEST);
     
    		gl.glMatrixMode(GL10.GL_MODELVIEW);
    		gl.glLoadIdentity();
     
    		_camera.apply(gl);
    		_skybox.draw(gl);
     
    		gl.glActiveTexture(GL10.GL_TEXTURE0);
    		gl.glBindTexture(GL10.GL_TEXTURE_2D, _textureID);
    		gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
    		gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
     
    		_terrain.draw(gl);
    Ma scene est affichée de 0.1 à 100 de distance.
    Je suis arrivé au resultat actuel en m'inspirant de tutos java/c/c++/android donc c'est un peu chaud et c'est une sorte de pot-pourri. Je vais surement devoir degager des lignes inutiles.

    Est-ce que quelque chose vous choque là dedans?

  6. #6
    Membre émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Par défaut
    Rajoutes:


Discussions similaires

  1. [OpenGL ES] Android/iOS
    Par DebiloBob dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 12/05/2011, 21h20
  2. Réponses: 2
    Dernier message: 23/02/2011, 16h59
  3. Réponses: 1
    Dernier message: 04/03/2010, 01h30
  4. Android : Utiliser OpenGL ES
    Par nicolofontana12 dans le forum Android
    Réponses: 1
    Dernier message: 04/12/2009, 09h31
  5. [Mission/Télétravail] Développement logiciel sur mesure (UML/C/C++/C#/Java/OpenGL/Windows/Linux/Android)
    Par ideoservo dans le forum Demandes
    Réponses: 0
    Dernier message: 20/06/2009, 10h29

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