我正在使用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);
}
有什么建议吗?
答案 0 :(得分:1)
你发布的代码有什么问题?
就像一个注释:你可以使用Qt资源表示法(在路径中的前导:几乎每个Qt数据/流阅读器)。例如,您可以使用QFile(“:/ someresource”)。使用QFile和QDataStream,我想(但也许我错了)你只能读取文件的块而不加载整个资源并在读取时阻塞线程。如果它阻止主线程,你总是可以使用QRunnable或QThread在后台加载资源。
对于缓冲:我不知道Qt内置的任何缓存解决方案(网络相关部分除外),所以你应该自己实现它。
通过这种方式,您可以构建一个MyResource类,该类在后台线程中加载目标资源,并在完成后通过信号/槽通知,并可以按照您希望的方式缓存资源的数据。