0

Qt を使用して 3ds モデル ローダーを作成しています。

Qt リソース システムを利用して、モデルのロードなどに使用したいと考えています。

次のような構文を実行したいと思います。

Mesh* MeshLoader::loadMesh(const QString& resource) {
    QResource qResource(resource);
    QResource::registerResource(resource); 
    SomeBuffer buffer(qResource.data())
    while (!buffer.eof()) { 
        // Process the file
    }
    QResource::unregisterResource(resource);
}

助言がありますか?

4

1 に答える 1

1

そして、投稿に含めたコードの問題は何ですか?

注: ほとんどすべての Qt データ/ストリーム リーダーで Qt リソース表記 (パスの先頭の :) を使用できます。たとえば、QFile(":/someresource") を使用できます。QFile と QDataStream を使用すると、リソース全体をロードしたり、読み取り中にスレッドをブロックしたりせずに、ファイルのチャンクのみを読み取ることができると思います (ただし、間違っている可能性があります)。メインスレッドをブロックする場合は、いつでも QRunnable または QThread を使用してバックグラウンドでリソースをロードできます。

バッファリングの場合: Qt に組み込まれているキャッシュ ソリューションはわかりません (ネットワーク関連の部分を除く)。そのため、おそらく自分で実装する必要があります。

このようにして、バックグラウンド スレッドでターゲット リソースをロードし、終了時にシグナル/スロットで通知し、リソースのデータを必要な方法でキャッシュできる MyResource クラスを構築できます。

于 2012-05-23T09:56:49.030 に答える