Open Source Web Development Tutorials - Dev Shed
OpenGLでの基本的なライティング
(2009/02/24公開)
ライティングを実装する手順
OpenGLでライティングAPIを使うには、特定の手順に従う必要があります。これらの手順は、必要な条件に応じて変化します。条件には、材質、色などが含まれます。ただしここの記事では、単純なライティングを対象とするため、基本的な手順についてのみ説明します。ここで重要な点は、これらの条件が変更された場合でも、基本的な手順は変わらないということです。必要な手順は次のとおりです。
1.ライティングを有効にする。
2.各頂点の法線ベクトルを定義する。
3.1つ以上の光源を作成する。
4.ライティングモデルを選択する。
これらの中で、3番目と4番目の手順はさらに複数の細かい手順に分けられます。以下では、その詳細について説明します。
ライティングを有効にする
OpenGLは、ステートマシンに対応します。この比較では、ライティングは状態の1つに対応します。このため、ライティングを有効にする必要があります。ライティングを有効にするには、glEnable()関数を呼び出し、パラメータとしてGL_LIGHTINGを指定します。ライティングを有効にする操作は、照明に関するほかの操作をする前に行う必要があります。この操作のステートメントは次のとおりです。
glEnable(GL_LIGHTING);
各頂点の法線ベクトルを定義する
オブジェクトとの相対的な光の方向、つまりオブジェクトの頂点への法線を、定義して決定します。OpenGLでは、法線ベクトルの計算は自動的に行われません。法線ベクトルの計算については、将来の記事で説明します。
計算された法線ベクトルを、OpenGLに渡します。このためには、glNormal関数のいずれかのバリエーションを使用します。ただし、法線ベクトルが渡されない場合、OpenGLは法線ベクトルとして(0, 0, 0, 0)を使用します。
1つ以上の光源を作成する
1つ以上の光源を作成する手順は、さらに次の2つの手順に分けられます。
1.光源を定義する
OpenGLでは、最大8つまでの光源を定義できます。これらの光源の名前は、GL_LIGHTnの形式です。nは0~7の数値です。光源を定義するには、glLight*()のバリアントを使います。基本的に、この関数には光源番号、光源の種類、光を制御する値(特に色)を指定します。色はRGBA、つまり赤、緑、青、アルファの形式で定義されます。例えば、光源番号が0、種類が反射光、値として浮動小数点配列を指定して光源を定義するステートメントは次のようになります。
GLfloat specular[] = {1.0f, 1.0f, 1.0f , 1.0f};
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
2.光源を有効にする
次の手順では、定義した光源を有効にします。このためには、glEnableを使用して、光源番号をパラメータとして渡します。デフォルトでは、すべての光源が無効になっています。光源番号をglEnable()に渡すと、その光源が有効になります。例えば、次のステートメントは、番号が0である光源を有効にします。
glEnable(GL_LIGHT0);
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








