「GL_Texture_2D」を texture_target として使用して NPOT テクスチャを表示できない理由を理解するために、C++ の単純なアプリケーションを作成しています。ある時点で、いくつかのミップマップを生成する必要があるため、四角形のテクスチャを使用することはできません。
Win7 Pro (x64)、Intel i7-2600K CPU、8GB RAM、NVIDIA Quadro 600 を実行しています。私の Quadro のドライバーは 296.35 で、OpenGL 4.2 をサポートしています。
1 動作バージョン 「デフォルト」テクスチャを使用すると、スムーズに実行され、任意の NPOT テクスチャが表示されます。
glBindTexture( target = GL_TEXTURE_2D, texture = 0 )
2 壊れたバージョン 1 つ以上のテクスチャが必要なので、それらの「名前」を取得する必要があります。名前付きテクスチャをバインドし、glGenTexture を呼び出し、そのテクスチャを glBindTexture に使用しようとすると、白い四角形しか得られません。
glGenTextures(n = 1, textures = &2)
glBindTexture(target = GL_TEXTURE_2D, texture = 2)
ハードウェアが NPOT テクスチャをサポートしていることは確かです。openGL 拡張機能を確認したところ、「GL_ARB_texture_non_power_of_two」がリストされています。また、典型的な Windows バージョンの の代わりに and を使用しています。
nvidia フォーラムでもこの質問をしました。この投稿では、両方のログ ファイルを見つけることができます。