Paysage sous OpenGL

Paysage sous OpenGL - C++ - Programmation

Marsh Posté le 06-04-2004 à 16:57:00    

Salut,
J´aimerais creer un ciel pour mon jeu qui se deroule en exterieur (jeu de golf) et je ne sais pas quelle surface  prendre.
Une enorme sphere de rayon 1000?
un cube?un cylindre?
Aussi je ne sais pas si il est possible avec les quadriques de repeter une texture avec les coordonnees auto generees. Parce que une texture de 256*256 sur une sphere pareil ca doit etre vraiment pas beau.
Merci

Reply

Marsh Posté le 06-04-2004 à 16:57:00   

Reply

Marsh Posté le 06-04-2004 à 19:04:18    

tu fe une skybox comme ds la plupart des jeux, tu va pas foutre 1000 faces rien que pour le ciel :D  
 
sinon pour repeter les textures, ca se jout au niveau des coordonnees que tu indique avec glTexCoord
 
==> si tu fait par ex  
 
glTexCoord2i(0,0);  
...
glTexCoord2i(100,0);  
...
glTexCoord2i(100,100);  
...
glTexCoord2i(0,100);  
...
 
ca t'affichera la texture repetée 100 fois sur la surface


Message édité par skelter le 06-04-2004 à 19:05:10
Reply

Marsh Posté le 06-04-2004 à 19:26:12    

Merci
Mais cèst quoi une SkyBox au juste un Cube?
et puis glTexCoord2i(100,0) ca equivaut bien tu es sur a 100 fois un glTexCoord2i(1,0) et non pas a un stretching de la texture?

Reply

Marsh Posté le 06-04-2004 à 19:54:44    

pour le glTexCoord2i(100,0) le mieux c que tu essay come ca tu verra ;)
 
une skybox c'est un cube dans lequel ya ta map, et ses textures representent le ciel et l'horizon, enfin ce que tu veux quoi
 
par contre il faut que tu te procure une skymap pour eviter que les arret soient visibles


Message édité par skelter le 06-04-2004 à 19:55:16
Reply

Marsh Posté le 06-04-2004 à 19:57:44    

et la SkyMap c'est quoi une texture particuliere? sinon je peux en recup ou Skelter?

Reply

Marsh Posté le 06-04-2004 à 20:05:01    

oui une skymap c'est 6 textures qui qd tu les foutera sur ton cube coincideront si bien que t'aura pas l'impression que c'est un cube
 
pour les trouver, google est ton ami
 
si tu veux voila le premier lien que j'ai trouvé
http://www.planethalflife.com/crinity/skydes.htm#cliff


Message édité par skelter le 06-04-2004 à 20:06:02
Reply

Marsh Posté le 06-04-2004 à 20:06:02    

Merci Skelter je me lance!

Reply

Marsh Posté le 07-04-2004 à 22:54:13    

skelter a écrit :

tu fe une skybox comme ds la plupart des jeux, tu va pas foutre 1000 faces rien que pour le ciel :D  
 
sinon pour repeter les textures, ca se jout au niveau des coordonnees que tu indique avec glTexCoord
 
==> si tu fait par ex  
 
glTexCoord2i(0,0);  
...
glTexCoord2i(100,0);  
...
glTexCoord2i(100,100);  
...
glTexCoord2i(0,100);  
...
 
ca t'affichera la texture repetée 100 fois sur la surface


 
j'ai essaye ton truc et ma texture n'est pas repetee? commenet ca se fait :
Voila mon code:

Code :
  1. void CMiniPutt::DrawSkyMap() const
  2. {
  3.  glPushMatrix();
  4.  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
  5.  //glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_REPLACE);
  6.  glEnable(GL_TEXTURE_2D);
  7.  glBindTexture(GL_TEXTURE_2D, 15);
  8.  glRotatef(90.0,1.0,0.0,0.0);
  9.  //glScalef(10.0,10.0,10.0);
  10.     glBegin(GL_QUADS);   // Start Drawing Quads
  11.  // Front Face
  12.  glNormal3f( 0.0f, 0.0f, 1.0f);  // Normal Facing Forward
  13.  glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f); // Bottom Left Of The Texture and Quad
  14.  glTexCoord2f(100.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f); // Bottom Right Of The Texture and Quad
  15.  glTexCoord2f(100.0f, 100.0f); glVertex3f( 100.0f,  100.0f,  100.0f); // Top Right Of The Texture and Quad
  16.  glTexCoord2f(0.0f, 100.0f); glVertex3f(-100.0f,  100.0f,  100.0f); // Top Left Of The Texture and Quad
  17.  glEnd();
  18.  // Back Face
  19.  glBindTexture(GL_TEXTURE_2D, 15);
  20.  glBegin(GL_QUADS);
  21.  glNormal3f( 0.0f, 0.0f,-1.0f);  // Normal Facing Away
  22.  glTexCoord2f(100.0f, 0.0f); glVertex3f(-100.0f, -100.0f, -100.0f); // Bottom Right Of The Texture and Quad
  23.  glTexCoord2f(100.0f, 100.0f); glVertex3f(-100.0f,  100.0f, -100.0f); // Top Right Of The Texture and Quad
  24.  glTexCoord2f(0.0f, 100.0f); glVertex3f( 100.0f,  100.0f, -100.0f); // Top Left Of The Texture and Quad
  25.  glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f, -100.0f); // Bottom Left Of The Texture and Quad
  26.  glEnd();
  27.  // Top Face
  28.  glBindTexture(GL_TEXTURE_2D, 15);
  29.  glBegin(GL_QUADS);
  30.  glNormal3f( 0.0f, 1.0f, 0.0f);  // Normal Facing Up
  31.  glTexCoord2f(0.0f, 100.0f); glVertex3f(-100.0f,  100.0f, -100.0f); // Top Left Of The Texture and Quad
  32.  glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f,  100.0f,  100.0f); // Bottom Left Of The Texture and Quad
  33.  glTexCoord2f(100.0f, 0.0f); glVertex3f( 100.0f,  100.0f,  100.0f); // Bottom Right Of The Texture and Quad
  34.  glTexCoord2f(100.0f, 100.0f); glVertex3f( 100.0f,  100.0f, -100.0f); // Top Right Of The Texture and Quad
  35.  glEnd();
  36.  // Bottom Face
  37.  glBindTexture(GL_TEXTURE_2D, 15);
  38.  glBegin(GL_QUADS);
  39.  glNormal3f( 0.0f,-1.0f, 0.0f);  // Normal Facing Down
  40.  glTexCoord2f(100.0f, 100.0f); glVertex3f(-100.0f, -100.0f, -100.0f); // Top Right Of The Texture and Quad
  41.  glTexCoord2f(0.0f, 100.0f); glVertex3f( 100.0f, -100.0f, -100.0f); // Top Left Of The Texture and Quad
  42.  glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f); // Bottom Left Of The Texture and Quad
  43.  glTexCoord2f(100.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f); // Bottom Right Of The Texture and Quad
  44.  glEnd();
  45.  // Right face
  46.  glBindTexture(GL_TEXTURE_2D, 15);
  47.  glBegin(GL_QUADS);
  48.  glNormal3f( 1.0f, 0.0f, 0.0f);  // Normal Facing Right
  49.  glTexCoord2f(100.0f, 0.0f); glVertex3f( 100.0f, -100.0f, -100.0f); // Bottom Right Of The Texture and Quad
  50.  glTexCoord2f(100.0f, 100.0f); glVertex3f( 100.0f,  100.0f, -100.0f); // Top Right Of The Texture and Quad
  51.  glTexCoord2f(0.0f, 100.0f); glVertex3f( 100.0f,  100.0f,  100.0f); // Top Left Of The Texture and Quad
  52.  glTexCoord2f(0.0f, 0.0f); glVertex3f( 100.0f, -100.0f,  100.0f); // Bottom Left Of The Texture and Quad
  53.  glEnd();
  54.  // Left Face
  55.  glBindTexture(GL_TEXTURE_2D, 15);
  56.  glBegin(GL_QUADS);
  57.  glNormal3f(-1.0f, 0.0f, 0.0f);  // Normal Facing Left
  58.  glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f, -100.0f); // Bottom Left Of The Texture and Quad
  59.  glTexCoord2f(100.0f, 0.0f); glVertex3f(-100.0f, -100.0f,  100.0f); // Bottom Right Of The Texture and Quad
  60.  glTexCoord2f(100.0f, 100.0f); glVertex3f(-100.0f,  100.0f,  100.0f); // Top Right Of The Texture and Quad
  61.  glTexCoord2f(0.0f, 100.0f); glVertex3f(-100.0f,  100.0f, -100.0f); // Top Left Of The Texture and Quad
  62.  glEnd();
  63.  glPopMatrix();
  64. }

Reply

Marsh Posté le 09-04-2004 à 20:52:17    

ta pris ca ou ce code douteux? les noms de texture sont generer par opengl, pourquoi ils sont en dur la?
 
sinon un ti link sur les texture
http://www.neogamedev.com/index.php?PageID=2027
 

Citation :

Remarque : Bien que les coordonnées de texture sont généralement compris dans l'intervalle [0.0, 1.0], celles-ci peuvent être supérieur si vous désirez répéter la texture (attention cependant à activer la répétition -> nous le verrons dans la suite de ce chapitre).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed