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


有什么建议么?

最佳答案

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

就像一个注释:您可以对几乎每个Qt数据/流读取器使用Qt资源表示法(路径中的前导:)。例如,您可以使用QFile(“:/ someresource”)。我认为使用QFile和QDataStream(但也许我错了),您可以只读取文件的一部分,而无需加载整个资源并在读取过程中阻塞线程。如果它阻塞了主线程,则您始终可以使用QRunnable或QThread在后台加载资源。

对于缓冲:我不知道Qt内置的任何缓冲解决方案(与网络相关的部分除外),因此您可能应该自己实现。

这样,您可以构建MyResource类,该类将目标资源加载到后台线程中,并在完成时通过信号/插槽进行通知,并可以按您希望的方式缓存资源的数据。

10-02 04:34