2011-09-04 87 views
1

使用cstdio等库处理3D模型文件时,将整个文件加载到具有文件长度大小的新缓冲区并不是更快,然后处理它而不是频繁使用文件数据访问功能 ?关于3D模型加载的问题

我的问题同时适用于二进制和文本模型格式,但尤其适用于通过逐行访问文件(例如Wavefront .OBJ)的函数进行读取的第二种方法。

缺点/优点? 也,我意识到更大的内存复杂度,任何其他消极方面?

+4

没有完全解决问题,您是否期望读取数据文件是3D建模处理时间的重要组成部分?如果是这样,为什么?如果没有,为什么要担心呢? – dmckee

+0

拥有2个线程,其中一个读取并建立模型将是最佳选择 – BlackBear

+0

@BlackBear:如果两个线程都从不同的物理硬盘读取,那么也许。否则,IO瓶颈将会破坏整个基准。 –

回答

3

一个负面的方面是,如果这是单线程的CPU没有做任何事情,而整个文件正在被读入内存,甚至可能延长加载时间。

然而,无论如何,速度的收益或损失可能可以忽略不计。

同样,不是直接解决问题,而是:如果处理时间是一个大问题,您可以编写一个应用程序来处理模型并将其存储为可以被mmap编辑的格式或某种类型的顶点缓冲区。

编辑:我不太确定这种数据映射有多好建议,有人可以对此进行评论吗?

+0

'mmap'是一个明智的选择。你基本上让操作系统担心一切。它不像自己做所有事情一样灵活。 –