OpenGLでミップマップを実装するのに問題があります。私はOpenFrameworksを使用しており、ミップマップの作成とレンダリングをサポートするようにofTextureクラスを変更しました。
次のコードは、クラスの元のテクスチャ作成コードです(わかりやすくするために少し変更されています)。
glEnable(texData.textureTarget);
glBindTexture(texData.textureTarget, (GLuint)texData.textureID);
glTexSubImage2D(texData.textureTarget, 0, 0, 0, w, h, texData.glType, texData.pixelType, data);
glTexParameteri(texData.textureTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(texData.textureTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glDisable(texData.textureTarget);
これは、ミップマップをサポートする私のバージョンです。
glEnable(texData.textureTarget);
glBindTexture(texData.textureTarget, (GLuint)texData.textureID);
gluBuild2DMipmaps(texData.textureTarget, texData.glTypeInternal, w, h, texData.glType, texData.pixelType, data);
glTexParameteri(texData.textureTarget, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(texData.textureTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glDisable(texData.textureTarget);
コードはエラーを生成せず(gluBuild2DMipmapsは「0」を返します)、テクスチャは問題なくレンダリングされます。しかし、違いは見られません。
私がレンダリングするシーンは、z=0の「平らな正方形のタイル」で構成されています。基本的には2Dシーンです。タイルを描画する前に、「glScale()」を使用してズームインおよびズームアウトします。ズームアウトすると、タイルテクスチャのピクセルが「踊り」始め、(私が知る限り)フィルタリングされていないテクスチャルックアップを示します。参照:http ://www.youtube.com/watch?v = b_As2Np3m8Aat25s。
私の質問は、カメラの位置を移動せず、シーン全体のスケーリングのみを使用するため、OpenGLが適切なミップマップレベルを決定できず、フルテクスチャサイズ(レベル0)を使用することを意味しますか?
ポール