それぞれ 250 KB から 500 KB の約 6 つのファイルがあります。これらの各ファイルには、複数の QImages が含まれています。各ファイルには、128x64 の約 400 枚の画像があります。メモリへの読み込みは約 60MB/秒です (OpenGL は PNG を独自の形式に展開する必要があるため)。
このプロセスをスピードアップすることは可能ですか? 私はギグを埋めるために苦労しているので、それは骨の折れるほど遅いです.
QFile file("file.ucv");
if (file.open(QIODevice::ReadOnly)) {
qDebug() << "Read from hdd";
QDataStream r(&file);
r.setVersion(QDataStream::Qt_4_3);
QImage t;
int i = maxPics * place;
glGenTextures(maxPics, &texture[i]);
for (int y = 0; y < yNrPics; y++)
for (int x = 0; x < xNrPics; x++, i++) {
// Write to precomputed object
r >> t;
glBindTexture( GL_TEXTURE_2D, texture[i] );
glTexImage2D( GL_TEXTURE_2D, 0, GL_COMPRESSED_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 );
}
プロファイラーは、この行が最も消費量が多いと判断します。
glTexImage2D( GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits() );
圧縮を非圧縮に変更すると、多少時間が節約されますが、それでもそれほど多くはありません。
読み込まれた QImage は GLformat です。