-2

私は、球体を jpeg 画像でテクスチャリングするプロジェクトと、ユーザーが球体を右または左に回転させるためのいくつかのキーボード ナビゲーション キーを使用するプロジェクトに取り組んでいます。問題は、SOIL を使用して画像を読み込もうとしたところ、正常に読み込まれましたが、問題は球の回転の処理が遅いことです...助けてください!

これは、メインメソッドで一度呼び出されるseoarateメソッドでjpeg画像をロードする方法です

void loadtexture()
{
    tex_2d[0] = SOIL_load_OGL_texture(
        "filename",
        SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,
        SOIL_FLAG_MIPMAPS);
    printf( "Image loaded successfully.. ");
    if(tex_2d[0]==0 ) {
        printf( "SOIL loading error: '%s'\n", SOIL_last_result() );
    }
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);//GL_NEAREST
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
}

これが球を作成してテクスチャを適用する方法です

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex_2d[0]);
GLUquadricObj* esphere2 = gluNewQuadric();
gluQuadricTexture(esphere2, true);
gluQuadricNormals(esphere2, GLU_SMOOTH);
glEnable(GL_CULL_FACE);
gluSphere(esphere2, 4, 50, 50);
gluDeleteQuadric(esphere2); 
4

1 に答える 1

0

問題は、SOIL を使用して画像を読み込もうとしたところ、正常に読み込まれましたが、問題は球の回転の処理が遅いことです。

これは、フレーム描画ごとにテクスチャを再ロードしているように見えます。なぜこれを行うのですか?テクスチャを一度ロードするだけで完了です。

于 2016-04-27T08:42:47.143 に答える