我试图使GLUT / OpenGL的一个镀铬的多维数据集,我不知道到底该怎么做。

我在教科书这表明“铬”作为被查找一个“材料表”: 环境:(0.25,0.25,0.25),弥漫性:(0.4,0.4,0.4),和镜面:(0.774597,0.774597,0.774597)

我的问题是,如何创建一个简单的立方体和转运蛋白/ 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

讷河教程23 覆盖该用球面映射。您也可以使用GLSL生成每个顶点或每像素自己的纹理坐标。 这里的一个教程上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top