iOS で使用するオブジェクト ローダーの作成に取り組んでいます。OBJ ファイルから頂点、法線、および面データをロードし、このデータを配列に配置してオブジェクトを再構築しました。しかし、照明の問題に遭遇しました。下部にあるのは、プログラムのシミュレーションからのビデオです。これは、照明が次の位置にある場合です。
CGFloat position[] = { 0.0f, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, position);
これは、各フレームの render メソッドと、セットアップ時に 1 回呼び出されるセットアップ ビュー メソッドの両方で指定されます。
さまざまなその他の照明の詳細はここにあります。これらはセットアップ中に一度呼び出されます。
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
CGFloat ambientLight[] = { 0.2f, 0.2f, 0.2f, 1.0f };
CGFloat diffuseLight[] = { 1.0f, 0.0f, 0.0, 1.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
CGFloat position[] = { 0.0f, -1.0f, 0.0f, 0.0f };
glLightfv(GL_LIGHT0, GL_POSITION, position);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_NORMALIZE);
問題のビデオは次の場所にあります。
ありがとう、
ポール
[編集]
詳細については、法線は次のコードによっても提供されます。現在、それらは大きな法線配列または XYZ XYZ XYZ などにあります...
// FACE SHADING
glColorPointer(4, GL_FLOAT, 0, colors);
glEnableClientState(GL_COLOR_ARRAY);
glNormalPointer(GL_FLOAT, 3, normals);
glEnableClientState(GL_NORMAL_ARRAY);
glDrawArrays(GL_TRIANGLES, 0, 3*numOfFaces);
glDisableClientState(GL_COLOR_ARRAY);