SSブログ

Androidアプリ開発 OpenGL 光源の色 [Android OpenGL]

光源の色

実は、光源にも色を設定することができる。太陽光線は、「白」。電球は「黄色っぽい」。蛍光灯は「青っぽい」といったことをシミュレートできるわけです。

まぁ、やってみた方がわかりやすいであろう。
光源の色は、glLightfvで指定できる。

	// レンダラークラス
	class OpenGLRenderer implements Renderer {
		float lightpos[] = {0.0f, 0.0f, 4.0f, 0.0f};
		float red[] = {1.0f, 0.0f, 0.0f, 1.0f};
		float green[] = {0.0f, 1.0f, 0.0f, 1.0f};
		float blue[] = {0.0f, 0.0f, 1.0f, 1.0f};
		float white[] = {1.0f, 1.0f, 1.0f, 1.0f};
		float gray[] = {0.5f, 0.5f, 0.5f, 1.0f};
		float yellow[] = {1.0f, 1.0f, 0.0f, 1.0f};

		@Override
		public void onDrawFrame(GL10 gl) {
			gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
			// ライティングをON
			gl.glEnable(GL10.GL_LIGHTING);
			// 光源を有効にして位置を設定
			gl.glEnable(GL10.GL_LIGHT0);
			gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightpos, 0);
			gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, red, 0);
			gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, blue, 0);
			gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_SPECULAR, yellow, 0);
			gl.glMatrixMode(GL10.GL_MODELVIEW);
			gl.glLoadIdentity();
			gl.glPushMatrix();		// マトリックス記憶
			gl.glTranslatef(1f, 0, -3f);
			gl.glRotatef(angle, 0, 1, 0);
			gl.glEnable(GL10.GL_CULL_FACE);
			gl.glCullFace(GL10.GL_BACK);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, gray, 0);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, gray, 0);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR, gray, 0);
			gl.glMaterialf(GL10.GL_FRONT_AND_BACK, GL10.GL_SHININESS, 100f);
			model.draw(gl);
			gl.glPopMatrix();		// マトリックスを戻す

			// ふたつめの描画
			gl.glPushMatrix();		// マトリックス記憶
			gl.glTranslatef(-1f, 0, -3f);
			gl.glRotatef(angle, 0, 1, 0);
			gl.glCullFace(GL10.GL_BACK);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, gray, 0);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, gray, 0);
			gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_SPECULAR, gray, 0);
			gl.glMaterialf(GL10.GL_FRONT_AND_BACK, GL10.GL_SHININESS, 20f);
			model.draw(gl);
			gl.glPopMatrix();		// マトリックスを戻す
			angle += 0.5;			// 回転角度は最後に計算
		}


三角形君たちの色は、グレーにしてみた。アンビエントもディフューズもスペキュラもみなグレー。光源の色は、glLightfvで設定する。このとき、光源番号を第一引数で指定する。光源の色にもアンビエントもディフューズもスペキュラがある。第二引数で、色属性の種類を指定する。後はglMaterialfvと同じ。
光源のアンビエントを赤、ディフューズを青、スペキュラを黄色にしてみた。



三角形はグレーなので、色は付いていない。光源の色が物体に反映されている。アンビエントが強く出ているときに、光源のアンビエントである「赤」が出る。
スペキュラー、ディフューズも同様ではあるが、スペキュラーの黄色は出にくい。ディフューズと混じっている感じだ。




サイト内を検索

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。



Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

イラストで理解 SQL はじめて入門

イラストで理解 SQL はじめて入門

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/05/16
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。