Pregunta

Estoy intentando hacer un cubo cromado en GLUT / OpenGL y no estoy seguro exactamente cómo hacerlo.

Busqué una "Tabla de Materiales" en un libro de texto que mostró "Chrome", como ser: Ambiente: (0,25, 0,25, 0,25), Diffuse: (0.4, 0.4, 0.4), y Specular:. (0.774597,0.774597,0.774597)

Mi pregunta es, ¿cómo puedo crear un simple cubo y aplicar este material / textura a ella en Superabundancia / OpenGL?

¿Debo usar "glutSolidCube ()"? Si es así, ¿cómo entonces aplicar la textura de cromo a él?

Puede cualquier personas GLUT / OpenGL me punto en la dirección correcta?

¿Fue útil?

Solución

Esto debería ser tan simple como llamar glMaterialfv() antes glutSolidCube() .

No he hecho OpenGL desde la escuela, pero aquí hay un código lazo de la pantalla de un viejo proyecto que utiliza una esfera que debe conseguir que en el camino correcto:

_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();
}

Otros consejos

¿Has mirado en el mapeo medio ambiente? Desea que el objeto de reflejar la luz de otros objetos en el entorno, por lo que, básicamente, aplicar una textura que se ve como el medio ambiente y generar las coordenadas de texturas en base a las normales. Esto le dará a la superficie una apariencia de espejo. Usted puede tener OpenGL generar automáticamente las coordenadas de textura para cada vértice en base a glTexGen .

NeHe tutorial 23 cubre este con el mapeo de esfera. También se pueden generar sus propias coordenadas de textura por vértice o por píxel usando GLSL. Aquí hay un tutorial en eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top