私は75*9 * 32の画像を持っており、PNG形式のハードドライブには合計64MBがあります。それぞれ128*256ピクセルの画像をロードすると、RAMに1.5GBのメモリが必要になります。ミップマップを有効にしていません。
GPUは生の画像しか保存しないためだと思いますが、メモリ使用量を増やす方法はありますか?
一度だけ作成されるフレームバッファオブジェクトを使用してテクスチャをロードしています。
テクスチャをロードするために以下を使用します。
QImage catchImage = catchFbo->toImage();
QImage t = QGLWidget::convertToGLFormat(catchImage);
glGenTextures( 1, &Item::texture[i] );
glBindTexture( GL_TEXTURE_2D, Item::texture[i] );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits() );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
編集:GL_RGBAの代わりにGL_COMPRESSED_RGBAが大きな違いを生むようです。現在、500MBを使用しています。