-4

.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が私に与えたものです。

1番目の方法。これはglDrawElemntが私に与えたものです。

2:

for(int i=0;i<trianglesNumber;i++)
{
glBegin(GL_TRIANGLES);
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glNormal3f();glVertex3f();
glEnd();
}

2番目の方法

2番目の方法

4

1 に答える 1