0

我正在寻找比我当前的实现更好的方法来处理网格,这基本上是类形式的 .obj 格式。

我目前的结构是

Class Vertex
{
    float[3] Pos;
}

Class Face
{
    Vertex[3] Verts;
    float[3][3] Norm;
    float[3][3] Tex;
}

Class Mesh
{
    Face[] MeshData;
}

在大多数情况下我可以很好地使用它,但我希望能够做一些事情,比如操纵一个顶点并随机移动它。我做到了,但是连接的面不会随之移动。

这可能可以通过在同一位置对顶点进行所有引用来解决,对同一顶点的引用,但我不知道如何事先做到这一点,我无法想象删除双顶点会是一个甚至远程快速使用我的设置进行操作。

4

1 回答 1

0

如果您要操作网格,渲染速度是次要的,请查看半边数据结构

如果渲染速度是最重要的,则将所有内容展平为交错的顶点/texcoord/法线数组,以获得最大的 VA/VBO 友好性:

struct Vertex
{
    float x, y, z;
    float u, v;
    float nx, ny, ny;
};

通常,您希望sizeof(Vertex)成为 32 字节的倍数。

于 2011-04-04T17:51:26.163 回答