문제

나는 Glut / OpenGL에서 크롬 큐브를 만들려고 노력하고 있으며 어떻게 해야하는지 정확히 잘 모르겠습니다.

나는 "크롬"을 다음과 같이 보여주는 교과서에서 "재료 테이블"을 찾아 보았습니다 : Ambient : (0.25, 0.25, 0.25), 확산 : (0.4, 0.4, 0.4) 및 스펙 큘러 : (0.774597,0.774597).

내 질문은 간단한 큐브를 만들고이 재료/질감을 Glut/OpenGL에 어떻게 적용합니까?

"GlutsolidCube ()"를 사용합니까? 그렇다면 어떻게 크롬 텍스처를 적용합니까?

Glut/Opengl 사람들이 나를 올바른 방향으로 가리킬 수 있습니까?

도움이 되었습니까?

해결책

이것은 전화만큼 간단해야합니다 glMaterialfv() ~ 전에 glutSolidCube().

나는 학교 이후 OpenGL을 수행하지 않았지만 여기에 올바른 길을 가야 할 구체를 사용한 오래된 프로젝트의 디스플레이 루프 코드가 있습니다.

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

다른 팁

환경 매핑을 보셨습니까? 환경의 다른 물체의 빛을 반사하기를 원하므로 기본적으로 환경처럼 보이는 질감을 적용하고 정상을 기반으로 텍스처 좌표를 생성합니다. 이것은 표면에 거울 모양의 외관을 줄 것입니다. OpenGL이 glTexGen.

Nehe 튜토리얼 23 이것을 구분 매핑으로 다룹니다. GLSL을 사용하여 Vertex 당 또는 당당한 픽셀 당 자신의 텍스처 좌표를 생성 할 수도 있습니다. 다음은 튜토리얼입니다 그것에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top