OpenGL / Glut で Chrome キューブを作成しますか?
質問
GLUT / OpenGL でクロムキューブを作成しようとしていますが、正確な方法がわかりません。
教科書の「材質表」を調べてみると、「Chrome」とは次のように示されていました。アンビエント:(0.25、0.25、0.25)、拡散:(0.4、0.4、0.4)、および鏡面反射光:(0.774597、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 を使用して、頂点ごとまたはピクセルごとに独自のテクスチャ座標を生成することもできます。 ここにチュートリアルがあります その上で。