ミップマップを機能させるのに苦労しています。私は OpenGL 1.1 を使用しており、glu を持っていないため、次のテクスチャ開始コードを使用しています。
glGenTextures(1,&texname); glBindTexture(GL_TEXTURE_2D,texname); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST_MIPMAP_NEAREST); w=幅;h=高さ; for(int i=0;i<ミップマップ;i++,w/=2,h/=2) glTexImage2D(GL_TEXTURE_2D,i,GL_RGBA8,w,h,0,GL_RGBA,GL_UNSIGNED_BYTE,tex[i]);
変数:
// データ型: unsigned long int *tex[20]; int ミップマップ、幅、高さ、w、h; Gluint texname;
tex
テクスチャ ミップマップ ピクセル配列のリストを保持する配列です。ミップマップは正しく処理されます (個別にテストしました)。mipmaps
元の画像を 1x1 ピクセル テクスチャに縮小するミップマップの数です (元のテクスチャは 256x256 なので、コードのこの時点では 8 です)。width
とheight
は元のテクスチャのサイズ (256x256) です。
その結果、テクスチャを使用することさえありません。すべてが単調なグレー (ライティングによるグレー) に見えます。
私が忘れているものはありますか?この参照を確認しましたが、競合は見つかりません。
その他の詳細: 合計で、GL_DEPTH_TEST、GL_TEXTURE_2D、GL_LIGHTING、GL_CULL_FACE、GL_FOG (およびおそらく違いがない GL_LIGHT0、GL_LIGHT1) を有効にしています。また、何か関係がある場合は、Mesa 3D の OpenGL の実装 (OpenGL バージョン 1.3 に変換される Mesa バージョン 4.0) を使用しています。
編集:
問題は、GL_NEAREST_MIPMAP_NEAREST を GL_NEAREST に変更した瞬間にテクスチャが (ミップマップを使用せずに) 正常に動作することです。したがって、それが他のコードである可能性があるかどうかはわかりません-少なくとも、それ以外のコードは考えられません。