.obj モデルをインポートするクラスをコーディングしましたが、法線が正しくないようです。そのため、何日もコードのバグを見つけようとしましたが、何も見つかりませんでした。次に、「glDrawElement()
」を次のコードのように変更しました。
for(int i=0;i<trianglesNumber;i++)
{
glBegin(GL_TRIANGLES);
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glEnd();
}
その場合、法線は正しいです。
この問題を解決する方法を知りたいのですが、大きなモデルをインポートする場合、2 番目の方法では FPS が低すぎます。この問題の解決にご協力いただければ幸いです。
2 つの方法のコードと結果を次に示します。
1:
void init()
{
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glTexCoordPointer(3,GL_DOUBLE,0,textures);
glNormalPointer(GL_DOUBLE,0,normals);
glVertexPointer(3,GL_DOUBLE,0,vertex);
}
それから glDrawElements(GL_TRIANGLES,faces*3,GL_UNSIGNED_INT,vertexIndex);
1番目の方法。これはglDrawElemntが私に与えたものです。
2:
for(int i=0;i<trianglesNumber;i++)
{
glBegin(GL_TRIANGLES);
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glEnd();
}
2番目の方法