2016-04-26 10 views
-2

私は、球体をjpegイメージでテクスチャするプロジェクトに取り組んでいます。問題は、画像をロードするためにSOILを使用してみましたが、正常にロードされましたが、問題は回転の処理が遅いことです...何か助けてください!SOLを使用してjpegイメージをロードするときのOpenGLの低速処理

これは私が主な方法

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); 
} 

に一度と呼ばれるseoarate方法でJPEGイメージをロードする方法であり、これは私が自分の球を作成し、それに

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); 
+1

ソースコードを見て、何が遅くなっているのかを推測してもらう必要があります。レンダーループと球の宣言を見ることができますか?理想的には、[最小限の、完全で検証可能な例](http://stackoverflow.com/help/mcve) – WearyWanderer

+0

@mallahyk:うわー、なぜコメントのコードを投稿しますか?質問を編集してそこに貼り付けるだけです。 – datenwolf

答えて

0
をテクスチャを適用する方法であります

問題は、イメージを読み込むためにSOILを使用してみましたが、正常に読み込まれましたが、球回転の処理が遅いことがあります。

これは、フレームの描画ごとにテクスチャを再読み込みしているかのように読み込まれます。なぜあなたはこれをやりますか?一度テクスチャをロードしておけば完了です。

+0

はい私はそれをして、今よりはるかに良い..ありがとう しかし、私は今テクスチャ球を回転させるためにキーボードを使用すると、テクスチャ自体を回転させなければならず、画像はフルサイズで表示されません。 私は、サイズ5276x2688のjpgパノラマ画像を使用していますが、画像の残りの部分は画像の残りの部分には存在しませんが、球の残りの部分は非画像として表示されるため、SOILを使用してロードする画像のサイズに関する制約があります。 – mallahyk

+0

@mallahyk:OpenGL実装では、最大テクスチャイメージサイズに一定の制限があります。あなたは 'glGetInteger(GL_MAX_TEXTURE_SIZE、...)'を使って実際の制限を問い合わせることができます。私はGL_SPHERE_MAPテクスチャ座標生成モードを使用しているあなたの "コードコメント"(コメントを使用し、あなたの質問に貼り付けて、編集することができます)を参照してください。球体マップは反射マッピングモードです。おそらく明示的にテクスチャ座標が示されていて、テクスチャ座標生成モードではありません。 – datenwolf

+0

私は球面マッピングを使って仮想環境を作りたいと思っています。私は何ができると思いますか? – mallahyk

関連する問題