我正在使用 C++ 和 OpenGL 导入 3d 模型(使用 FBX SDK)。
我做了一个顶点类型:
struct Vertex {
Vec3 position;
Vec2 texCoord;
Vec3 normal;
Vec3 binormal;
Vec3 tangent;
SkinInfo skin;
}
目前,我std::numeric_limits<float>::infinity()
在加载模型时将 a 分配给未使用的组件。并用 构造一个网格类std::vector<Vertex>
。
网格类的 ctor 将顶点列表更改为交错数组并计算偏移量和步幅,省略未使用的组件。
问题是,在加载模型时。对于简单的物体,只有位置、UV和法线信息;多么浪费内存。
也许最好的解决方案是将 fbx 文件导出为游戏友好格式,但我没有足够的时间。
我必须使用索引顶点数组来实现性能(glDrawElements
),但如果不使用顶点类型进行重复数据删除和索引,我找不到更好的解决方案。有更好的主意吗?