我正在使用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);
}有什么建议吗?
发布于 2012-05-23 17:56:49
你在帖子中包含的代码有什么问题?
注意:几乎每个Qt数据/流阅读器都可以使用Qt资源符号(路径中的前导:)。例如,您可以使用QFile(":/someresource")。我认为(也许我错了)使用QFile和QDataStream,您可以只读取文件的一小部分,而不必加载整个资源并在读取过程中阻塞线程。如果它阻塞了主线程,你可以随时使用QRunnable或QThread在后台加载资源。
对于缓冲:我不知道Qt中内置了任何缓存解决方案(除了与网络相关的部分),所以您可能应该自己实现它。
这样,您就可以构建一个MyResource类,该类在后台线程中加载目标资源,并在它完成时用信号/槽通知,并且可以按照您想要的方式缓存资源的数据。
https://stackoverflow.com/questions/10695383
复制相似问题