OpenGL / Glut에서 크롬 큐브를 만드시겠습니까?
문제
나는 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 당 또는 당당한 픽셀 당 자신의 텍스처 좌표를 생성 할 수도 있습니다. 다음은 튜토리얼입니다 그것에.
제휴하지 않습니다 StackOverflow