3

GLUT / OpenGLでクロムメッキされた立方体を作成しようとしていますが、正確な方法がわかりません。

教科書で「Chrome」が次のように表示されている「MaterialsTable」を調べました:Ambient:(0.25、0.25、0.25)、Diffuse:(0.4、0.4、0.4)、Specular:(0.774597,0.774597,0.774597)。

私の質問は、単純な立方体を作成し、このマテリアル/テクスチャをGlut / OpenGLで適用するにはどうすればよいですか?

「glutSolidCube()」を使用しますか?もしそうなら、どうすればそれにクロムテクスチャを適用できますか?

GLUT / OpenGLの人は私を正しい方向に向けることができますか?

4

2 に答える 2

5

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();
}
于 2009-04-13T05:29:59.190 に答える
2

環境マッピングを見たことがありますか?オブジェクトが環境内の他のオブジェクトからの光を反射するようにしたいので、基本的には環境に似たテクスチャを適用し、法線に基づいてテクスチャ座標を生成します。これにより、サーフェスがミラーリングされた外観になります。OpenGLに、に基づいて各頂点のテクスチャ座標を自動的に生成させることができますglTexGen

NeHeチュートリアル23は、球体マッピングでこれをカバーしています。GLSLを使用して、頂点ごとまたはピクセルごとに独自のテクスチャ座標を生成することもできます。これがそのチュートリアルです。

于 2009-04-26T03:59:28.143 に答える