Domanda

Sto cercando di fare un cubo cromato in GLUT / OpenGL e non sono sicuro esattamente come farlo.

Ho guardato un "Materiali tabella" in un libro di testo che mostrava "Chrome" come: Ambiente: (0.25, 0.25, 0.25), Diffuse: (0.4, 0.4, 0.4), e speculare:. (0.774597,0.774597,0.774597)

La mia domanda è, come faccio a creare un semplice cubo e applicare questo materiale / texture ad esso in Glut / OpenGL?

Devo usare "glutSolidCube ()"? Se sì, come posso quindi applicare la texture Chrome ad esso?

Può un popolo GLUT / OpenGL mi punto nella giusta direzione?

È stato utile?

Soluzione

Questo dovrebbe essere semplice come chiamare glMaterialfv() prima glutSolidCube() .

Non ho fatto OpenGL dai tempi della scuola, ma ecco un po 'di codice di visualizzazione anello da un vecchio progetto che ha utilizzato una sfera che dovrebbe arrivare sulla strada giusta:

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

Altri suggerimenti

Hai guardato la mappatura ambiente? Volete che il vostro oggetto per riflettere la luce da altri oggetti presenti nell'ambiente, in modo da applicare fondamentalmente una trama che sembra l'ambiente e generare coordinate texture basate su normali. Questo darà alla superficie un aspetto a specchio. Si può avere OpenGL generare automaticamente le coordinate texture per ogni vertice based con glTexGen .

NeHe esercitazione 23 copre questo con la mappatura sfera. È inoltre possibile generare i propri coordinate di texture per-vertice o per pixel utilizzando GLSL. Ecco un tutorial su questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top