Pergunta

Eu estou tentando fazer um cubo cromado em GLUT / OpenGL e eu não sei exatamente como fazê-lo.

Eu olhei para cima a "Tabela de Materiais" em um livro que mostrou "Chrome", como sendo: Ambiente: (0,25, 0,25, 0,25), difusa: (0,4, 0,4, 0,4), e especular:. (0.774597,0.774597,0.774597)

A minha pergunta é: como faço para criar um simples cubo e aplicar este material / textura a ele em Glut / OpenGL?

Do que eu uso "glutSolidCube ()"? Se sim, como faço para, em seguida, aplicar a textura cromo para ele?

Pode qualquer GLUT / OpenGL pessoas me aponte na direção certa?

Foi útil?

Solução

Esta deve ser tão simples como chamar glMaterialfv() antes glutSolidCube() .

Eu não fiz OpenGL desde a escola, mas aqui está um código circuito de exibição de um projeto antigo que usou uma esfera que deverá fazê-lo no caminho certo:

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

Outras dicas

Você olhou para mapeamento de ambiente? Você quer que seu objeto para refletir a luz de outros objetos no ambiente, para que, basicamente, aplicar uma textura que se parece com o meio ambiente e gerar textura coordenadas com base em normais. Isto vai dar a superfície uma aparência espelhada. Você pode ter OpenGL gerar automaticamente coordenadas de textura para cada vértice baseado com glTexGen .

NeHe tutorial 23 cobre esta com mapeamento esfera. Você também pode gerar suas próprias coordenadas de textura por vértice ou por pixel usando GLSL. Aqui está um tutorial sobre isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top