光源

2009年12月30日

ファイル

21-light.tar.gz

使い方

キーボードのキー "p" で "Perspective" と "Orthogonal" が切り替わります。キー "s" でスムースシェーディング (グローシェーディング) "Smooth" とフラットシェーディング "Flat" が切り替わります。

内容

光源を使います。光源を使うために、以下の準備をします。

	glLightfv(GL_LIGHT0, GL_AMBIENT, light0Ambient);
	glLightfv(GL_LIGHT0, GL_DIFFUSE, light0Diffuse);
	glLightfv(GL_LIGHT0, GL_SPECULAR, light0Specular);
	glEnable(GL_LIGHT0);

光源は GL_LIGHT0 〜 GL_LIGHT7 まで使えます。上では GL_LIGHT0 の設定をして、最後の行で光源 GL_LIGHT0 を有効にしています。GL_AMBIENT は環境光の色の設定、GL_DIFFUSE は拡散光の色の設定、GL_SPECULAR は鏡面光の色の設定です。

光源の位置は次のように設定します。

	glLightfv(GL_LIGHT0, GL_POSITION, light0Position);

光源を使うと、直接の色指定は使えなくなり、変わりに材質を指定します。

	glMaterialfv(GL_FRONT, GL_AMBIENT, materialAmbient);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, materialDiffuse);
	glMaterialfv(GL_FRONT, GL_SPECULAR, materialSpecular);
	glMaterialfv(GL_FRONT, GL_SHININESS, materialShininess);

上 3 つは環境光、拡散光、鏡面光に対して反射する色の設定です。最後の GL_SHININESS は鏡面反射のハイライトの大きさで、他の設定の色指定と違い、指定するパラメタは 0 〜 128 の値です。

glShadeModel() で GL_SMOOTH, GL_FLAT を切り替えると、きれいに描画されたり、平坦に描画されたりします。

OpenGL プログラミング 目次へ