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 回答