缓冲来自QResource的原始数据?

时间:2012-05-22 03:32:57

标签: c++ qt

我正在使用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);
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你发布的代码有什么问题?

就像一个注释:你可以使用Qt资源表示法(在路径中的前导:几乎每个Qt数据/流阅读器)。例如,您可以使用QFile(“:/ someresource”)。使用QFile和QDataStream,我想(但也许我错了)你只能读取文件的块而不加载整个资源并在读取时阻塞线程。如果它阻止主线程,你总是可以使用QRunnable或QThread在后台加载资源。

对于缓冲:我不知道Qt内置的任何缓存解决方案(网络相关部分除外),所以你应该自己实现它。

通过这种方式,您可以构建一个MyResource类,该类在后台线程中加载目标资源,并在完成后通过信号/槽通知,并可以按照您希望的方式缓存资源的数据。