RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 [OpenGL-OpenGL ES] probleme affichage

Forum : OPENGL
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ OPENGL

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM OPENGL

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150517
Posté le 13/03/08 à 09:26
Bonjour,
je suis en train d'apprendre à me servir d'OpenGL ES et j'ai un petit problème (surement tout con) que je n'arrive pas à résoudre car je ne le comprends pas. J'ai créé 3 objets simples (parallélépipède rectangles) et je me balade au milieu d'eux via les touches (z -> avancer, s -> reculer, q -> gauche, d -> droite). pour faire simple, je simule un humain qui se balade entre des immeubles (il reste à la meme hauteur y). Pour chaque déplacement, je positionne la caméra grâce à ugluLookAtf().

Mon problème est que quand j'avance, au bout d'un certain nombre de fois, la scene visualisée change radicalement comme si j'avais effectué une transformation.


#pragma comment(lib, "libGLES_CM.lib") #pragma comment(lib, "ug.lib") #include "GLES/ug.h" int w = 0; int h = 0; float X,Z; //position de la camera à l'initialisation float Zinit = 0; float Yinit = 2; float Xinit = 4; GLfloat box1[] = { // FRONT 0, 0, -10, 3, 0, -10, 0, 7, -10, 3, 7, -10, // BACK 0, 0, -30, 3, 0, -30, 0, 7, -30, 3, 7, -30, // LEFT 0, 0, -30, 0, 7, -30, 0, 0, -10, 0, 7, -10, // RIGHT 3, 0, -30, 3, 7, -30, 3, 0, -10, 3, 7, -10, // TOP 0, 7, -30, 3, 7, -30, 0, 7, -10, 3, 7, -10, // BOTTOM 0, 0, -30, 3, 0, -30, 0, 0, -10, 3, 0, -10, }; GLfloat box2[] = { // FRONT 0, 0, -7, 3, 0, -7, 0, 5, -7, 3, 5, -7, // BACK 0, 0, -9, 3, 0, -9, 0, 5, -9, 3, 5, -9, // LEFT 0, 0, -9, 0, 5, -9, 0, 0, -7, 0, 5, -7, // RIGHT 3, 0, -9, 3, 5, -9, 3, 0, -7, 3, 5, -7, // TOP 0, 5, -9, 3, 5, -9, 0, 5, -7, 3, 5, -7, // BOTTOM 0, 0, -9, 3, 0, -9, 0, 0, -7, 3, 0, -7, }; GLfloat box3[] = { // FRONT 0, 0, -10, 4, 0, -10, 0, 5, -10, 4, 5, -10, // BACK 0, 0, -15, 4, 0, -15, 0, 5, -15, 4, 5, -15, // LEFT 0, 0, -15, 0, 5, -15, 0, 0, -10, 0, 5, -10, // RIGHT 4, 0, -15, 4, 5, -15, 4, 0, -10, 4, 5, -10, // TOP 0, 5, -15, 4, 5, -15, 0, 5, -10, 4, 5, -10, // BOTTOM 0, 0, -15, 4, 0, -15, 0, 0, -10, 4, 0, -10, }; void draw(); void init(){ glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glClearColor(0,0.6,1,1);//bleu glClearDepthf(1); glEnableClientState(GL_VERTEX_ARRAY);//pour desiner glShadeModel(GL_FLAT); // enleve les dégradés de couleur X = Xinit; Z = Zinit; } void display(UGWindow uwin){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); ugluPerspectivef(45, w/h, 0.5, 200); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); ugluLookAtf( X, Yinit, Z, X, Yinit, Z-1, 0, 1, 0); draw(); glFlush(); ugSwapBuffers(uwin); } void draw(){ glVertexPointer(3, GL_FLOAT, 0, box1); glColor4f(0.8, 0.8, 0.8, 1.0f);//gris glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//front glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);//back glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);//left glDrawArrays(GL_TRIANGLE_STRIP, 12, 4);//right glDrawArrays(GL_TRIANGLE_STRIP, 16, 4);//top glDrawArrays(GL_TRIANGLE_STRIP, 20, 4);//bottom glTranslatef(5,0,0); glVertexPointer(3, GL_FLOAT, 0, box2); glColor4f(0.6, 0.6, 0.6, 1.0f);// glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//front glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);//back glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);//left glDrawArrays(GL_TRIANGLE_STRIP, 12, 4);//right glDrawArrays(GL_TRIANGLE_STRIP, 16, 4);//top glDrawArrays(GL_TRIANGLE_STRIP, 20, 4);//bottom glTranslatef(5,0,0); glVertexPointer(3, GL_FLOAT, 0, box3); glColor4f(0.4, 0.4, 0.4, 1.0f);// glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//front glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);//back glDrawArrays(GL_TRIANGLE_STRIP, 8, 4);//left glDrawArrays(GL_TRIANGLE_STRIP, 12, 4);//right glDrawArrays(GL_TRIANGLE_STRIP, 16, 4);//top glDrawArrays(GL_TRIANGLE_STRIP, 20, 4);//bottom } void keyboard(UGWindow uwin, int key, int x, int y){ switch(key){ case 'z' : Z -= 1; ugPostRedisplay(uwin); break; case 's': Z += 1; ugPostRedisplay(uwin); break; case 'q' : X -= 1; ugPostRedisplay(uwin); break; case 'd' : X += 1; ugPostRedisplay(uwin); break; } } int main(){ UGCtx ug = ugInit(); w = 250; h = 250; UGWindow uwin = ugCreateWindow(ug, "", "proto", w, h, 100, 100); init(); ugDisplayFunc(uwin, display); ugKeyboardFunc(uwin, keyboard); ugMainLoop(ug); return 0; }


Y-a-t-il quelque chose que je fais mal ? Par exemple, ma perspective est-elle correcte, mon lookAt aussi ?

Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150557
Posté le 13/03/08 à 16:05
Il semble que le probleme ne vienne pas de ma prog mais d'autre chose. En effet, j'ai repris le tutorial 13 de zeuscmd.com et j'y ai ajouté quelques lignes de code pour pouvoir me balader dans la scene. J'ai exactement le meme probleme avec ce code : si je suis en déplacement parallele a un objet (par exemple si je le longe), quand j'arrive à la fin de l'objet (face back), c'est là qu'il y a un probleme d'affichage.
je ne sais pas si c'est un probleme du à la librairie openGL ES que j'utilise (Vincent 1.0.0) ou autre chose...

merci de votre aide

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 490
Message
#150571
Posté le 13/03/08 à 19:44
Je ne sais pas si ca va aider, mais c'est toujours bon d'essayer...

Essaye de rajouter glPushMatrix juste avant gluLookAtf() et glPopMatrix() juste apres ta fonction Draw(); Si ca ne marche pas, ca doit surement etre un probleme relier a la camera, pourtant elle me semble bien positionner...

Ou peut etre ton probleme vien t'il du fait que le "near plane" est trop loin de ta camera et il coupe les objects lorsceque tu approche trop rapidement. Essaye une valeur de 1.0 pour le near plane et 1000 pour le far plane. Bien sur si tes object font 3000 unité en largeur par example, joue avec ces valeurs a ta guise, donc dans ce ca je conseillerais simplement un near plane de 1 et un far plane de 10000. Voila.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150609
Posté le 14/03/08 à 09:19
j'ai essayé les deux trucs dont tu m'as parlé mais aucun n'a eu d'effet...Smiley

J'ai remarqué une chose assez bizarre aussi : le sol qui a comme coordonnées ((-50,0,10) ; (-50,0,-100) ; (60,0,10) ; (60,0,-100)) apparait au loin. Il semble qu'il soit vers z=-90 !! alors là, je ne vois pas du tout pourquoi...

merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150612
Posté le 14/03/08 à 09:36
en fait pour le sol, tant que la caméra est à z > 10 (début du sol), je vois le sol et dès que j'arrive au dessus de lui, il disparait...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 490
Message
#150632
Posté le 14/03/08 à 17:40
En OpenGL, je crois que y est l'axe de la hauteur, et z celui qui definit la distance, peut etre a tu simplement melanger les 2? Loarsque j'exporte un model de 3ds max dans un de mes projets, je doit inverser mon y et mon z, puis ajouter le signe "-" en avant de un des 2, je me rapelle plus lequel... Mais si ton models est fait a la main ne t'inquite pas pour ca.

Si tu veut, tu peut m'envoyer ton project dans un .zip avec l'executable, comme ca je pourrais mieux comprendre le probleme.

marijane_inc@hotmail.com

Ciao.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150745
Posté le 17/03/08 à 11:38
Je ne pense pas que cela puisse etre le probleme car mon exemple etait vraiment trivial. Je pensais plutot que c'était un bug des bibliotheques utilisées (implementation Fincent d'OpenGL ES + bibliothèque UG ). Pour le vérifier, j'ai essayé la même chose avec une autre implémentation d'openGL ES (Rasteroid) et ça à l'air de ne pas avoir ce problème. Je ne sais pas encore où est exactement le problème mais pour l'instant, j'ai quelque chose qui fonctionne.


A voir...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 490
Message
#150758
Posté le 17/03/08 à 16:37
A ouais, bizarre...

Petite question, pourquoi utilise tu OpenGL ES et non OpenGL tout court? C'est obliger?

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

crischprolch
Nouveau membre
Inscrit : 13/03/2008
Messages : 6
Message
#150767
Posté le 17/03/08 à 17:58
pour faire de l'embarqué, tu penses pas qu'il faille utiliser openGL Embedded Sytem...Smiley

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM OPENGL



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.