1

TRIANGLE_FAN を使用して塗りつぶした OpenGL 不規則ポリゴンに正しい照明を追加する必要があります。

glBegin(GL_TRIANGLE_FAN);

glNormal3f(0.0, 0.0, 1.0);
glVertex3f(0.0f, 0.0f,0.0f);
glVertex3f(b[0][0],b[0][1], 0);
glVertex3f(b[11][0], b[11][1], 0);
glVertex3f(b[7][0], b[7][1], 0);
glVertex3f(b[10][0], b[10][1], 0);
glVertex3f(b[6][0],b[6][1], 0);
glVertex3f(b[5][0],b[5][1], 0);
glVertex3f(b[4][0],b[4][1], 0);
glVertex3f(b[8][0],b[8][1], 0);
glVertex3f(b[3][0],b[3][1], 0);
glVertex3f(b[9][0],b[9][1], 0);
glVertex3f(b[2][0],b[2][1], 0);
glVertex3f(b[1][0],b[1][1], 0);
glVertex3f(b[0][0],b[0][1], 0);

glEnd();

現在のポリゴンの問題は、光を正しく反射しないことです。頂点からのみそうするため、当たる光は X の形になります。ポリゴンに頂点を追加する必要があると推測しています。三角形のファンを維持しながら頂点を追加する簡単な方法はありますか?

4

1 に答える 1

1

オブジェクトを照らすときに「正しい」結果を得るには、適切な法線を定義する必要があります。頂点ごとに法線が 1 つしかないため、明らかに正しくシェーディングされていません。

ただし、モデルの法線を計算する正しい方法はありません。オブジェクトのシェーディング方法を定義してから、シェーディングglNormal方法を OpenGL に通知する呼び出しを追加する必要があります。

于 2013-04-06T18:06:58.067 に答える