Bonjour,
Je réalise actuellement un petit projet pour me familiariser avec openGL.
Ce projet est une version simplifier du système solaire (classique ), jusque là tout va bien, mes planetes (glutWireSphere) ainsi que mes satellites tournent bien. par contre j'ai voulu texturer mon soleil (gluSphere) mais j'ai un petit probleme, lorsque je fait tourner ma vue il se passe deux phénomènes :
- lorsque je suis au dessus du plan d'équation z = 0 la texture se comporte bien (la texture de la demi-sphère supérieur est fixée)
- lorsque je suis au dessous du plan d'équation z= 0 la texture est une sorte de mirroir de la demi-sphère supérieur, mais en plus elle est mobile .
Si je m'approche suffisament (très près) la texture se comporte normalement. De plus lorsque la texture ne marche pas le z buffer lui aussi semble disfonctionner, mes planetes se chevauchent ...
C'est assez étrange comme problème et je n'arrive pas à voir d'où cela vient. J'ai essayer ce programme sur deux configurations différentes (ATI & nvidia) j'exclu donc le problème matériel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // initialisation opengl glEnable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // chargement de la texture AUX_RGBImageRec *texture1; texture1 = auxDIBImageLoad("mars.bmp"); glGenTextures (1, &texture); glBindTexture (GL_TEXTURE_2D, texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);Voici donc mon binaire si quelqu'un veut se rendre compte du problème de façon plus concrète.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // fonction display glBindTexture(GL_TEXTURE_2D, texture); GLUquadricObj *Quadric1 = gluNewQuadric(); gluQuadricDrawStyle(Quadric1, GLU_FILL); gluQuadricTexture(Quadric1, true); gluSphere(Quadric1, 500, 40, 40); glDisable(GL_TEXTURE_2D);
utilisation :
bouton gauche de la souris pour zoomer
bouton milieu (roulette) de la souris pour faire tourner la camera
http://proxima0.free.fr/solar.rar
Merci d'avance
Partager