最近、OpenGLプログラムがnVidiaQuadro140カードを搭載した2年前のLenovoラップトップでテクスチャを正しくレンダリングしないという問題に遭遇しました。OpenGL2.1.2およびGLSL1.20を実行しますが、ミップマッピングをオンにすると、画面全体が黒くなり、警告やエラーは発生しません。
これは私のテクスチャフィルターコードです:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
40分間いじった後、ミップマッピングが問題であることがわかりました。オフにすると修正されました:
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
エイリアシングがたくさん発生しますが、少なくともプログラムは表示され、正常に実行されます。
最後に、2つの質問:
- OpenGLバージョンをチェックする以外に、ミップマッピングがマシンで利用可能かどうかをチェックするための最良または標準的な方法は何ですか?
- ミップマッピングが利用できない場合、エイリアシングを回避するための最良の回避策は何ですか?
編集:
これが私が本当に求めている質問です:
プラットフォームでミップマッピングが利用可能かどうかをプログラムでどのように確認しますか?