TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

Think IT Software Developer's Think IT Find-IT 失敗しないソフト選び Find-IT TEDIA テクノロジーポータル TEDIA インストールマニアックス2008 インストールマニアックス2008

TEDIA SponsorsOpen 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);


前のページ     1    2    3    4    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.