次のコードを使用して、レンダリングを開始する前にループで GPU にテクスチャをアップロードしていますが、glTexStorage2D によって返される「ランダムな」メモリ不足エラーが発生します。つまり、小さなテクスチャがメモリから返されることがありますが、次の大きなテクスチャは問題なく返されます。GPU-Zで確認したところ、ビデオカードのメモリ(1GB)が180MBしか使用されていません。Gdebugger も使用しましたが、使用されるメモリはあまりありません (VBO、フロント/バック バッファー、テクスチャ、シェーダー)。テクスチャは 32x32 から 2048x2048 の間です。
glGenTextures(1, &TextureID);
showGlError();
glBindTexture(GL_TEXTURE_2D, TextureID);
showGlError();
Nof_MipMap = 2;
glTexStorage2D(
GL_TEXTURE_2D,
Nof_MipMap,
GL_RGBA8,
Image_Width, Image_Height);
glError = showGlError();
glTexSubImage2D(
GL_TEXTURE_2D,
0,
0, 0,
Image_Width, Image_Height,
GL_RGB,
GL_UNSIGNED_SHORT_5_6_5_REV,
Image_Address);
glError = showGlError();
glGenerateMipmap(GL_TEXTURE_2D); //Generate num_mipmaps number of mipmaps here.
glError = showGlError();
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
showGlError();
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
showGlError();
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR );
showGlError();
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
showGlError();