如何高效的载入并组织.x文件数据

来源:互联网 发布:北京好吃的餐厅 知乎 编辑:程序博客网 时间:2024/06/06 18:53

1.为什么要.x文件

    在我的引擎中,抽象出了Geometry的概念,它包含了顶点缓冲与索引缓冲的数据,用来负责组织出几何体。但是用代码画出有趣的东西是愚蠢的,因此,我在引擎中实现了.x文件读取子系统,通过读取.x文件的数据来生成对应的Geometries,因此我又抽象出Mesh的概念,来包含所有的由一个.x文件所能产生的Geometries.

    一般的,我通过.x的文件名来读取并产生一个Mesh,但是问题是,如果我的程序中多处需要该Mesh,我是否需要多次载入?答案当然是否定的,因为相同的.x文件意味着相同的数据,所以,也就是说,虽然读入一个.x文件应该产生一个独立的Mesh,但是Mesh中从.x中载入的数据却应该可以复用。

 

2.通过资源的组织来解决冗余问题

    首先,由于我需要对于相同的文件产生独立的Mesh,所以每次读入一个.x文件,我返回一个唯一的句柄,用来让程序可以通过句柄向.x文件读取子系统可以提取出当时申请所产生的Mesh.

    同时,为了避免系统对于同一文件的多次载入,假设当我第一次读取a文件,我就通过一个结构将a文件与第一次产生的Mesh对应,并将.x资源交给这个Mesh来保管。当第二次再次需要同一文件来创建Mesh时,只需要向第一个Mesh申请.x资源,就可以为第二个Mesh提供所需的数据。

    通过以上的组织,我可以通过同一文件产生不同的Mesh,同时又不需要多次载入。

原创粉丝点击