Question

Je tente de faire un cube chromé dans GLUT / OpenGL et je ne sais pas exactement comment le faire.

Je regardais un « tableau Matériaux » dans un manuel qui a montré « Chrome » comme étant: Ambiante: (0,25, 0,25, 0,25), Diffuse: (0,4, 0,4, 0,4), et spéculaire. (0.774597,0.774597,0.774597)

Ma question est, comment puis-je créer un cube simple et appliquer ce matériau / texture dans Glut / OpenGL?

Dois-je utiliser "glutSolidCube ()"? Si oui, comment puis-je puis appliquer la texture de chrome lui?

Peut-GLUT / personnes OpenGL me diriger dans la bonne direction?

Était-ce utile?

La solution

Cela devrait être aussi simple que d'appeler glMaterialfv() avant glutSolidCube() .

Je ne l'ai pas fait OpenGL depuis l'école, mais voici un code de boucle d'affichage d'un vieux projet qui a utilisé une sphère qui devrait vous mettre sur la bonne voie:

_Ambient[CHROME][0] = 0.25f;
_Ambient[CHROME][1] = 0.25f;
_Ambient[CHROME][2] = 0.25f;
_Ambient[CHROME][3] = 1.0f;
_Diffuse[CHROME][0] = 0.4f;
_Diffuse[CHROME][1] = 0.4f;
_Diffuse[CHROME][2] = 0.4f;
_Diffuse[CHROME][3] = 1.0f;
_Specular[CHROME][0] = 0.774597f;
_Specular[CHROME][1] = 0.774597f;
_Specular[CHROME][2] = 0.774597f;
_Specular[CHROME][3] = 1.0f;
_Shininess[CHROME] = 76.8f;


void Display()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glPushMatrix();
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, _Ambient[CHROME]);
    glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, _Diffuse[CHROME]);
    glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, _Specular[CHROME]);
    glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, _Shininess[CHROME]);
    // Translations...
    glutSolidSphere(_Radius, _Slices, _Stacks);
  glPopMatrix();

  glFlush();

  glutSwapBuffers();
}

Autres conseils

Avez-vous regardé la cartographie de l'environnement? Vous voulez que votre objet pour réfléchir la lumière d'autres objets dans l'environnement, de sorte que vous appliquez essentiellement une texture qui ressemble à l'environnement et générer des coordonnées de texture sur la base Normales. Cela donnera la surface un aspect miroir. Vous pouvez avoir OpenGL générer automatiquement les coordonnées de texture pour chaque sommet en fonction avec glTexGen .

tutoriel NeHe 23 couvre cela avec la cartographie de la sphère. Vous pouvez également générer vos propres coordonnées de texture par vertex ou par pixel en utilisant GLSL. Voici un tutoriel sur ce point.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top