在OpenGL中处理网格的建议方法

时间:2011-04-04 16:20:20

标签: java opengl 3d mesh

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

我目前的结构是

Class Vertex
{
    float[3] Pos;
}

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

Class Mesh
{
    Face[] MeshData;
}

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

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

1 个答案:

答案 0 :(得分:0)

如果你要操纵网格,渲染速度是次要的half-edge data structure

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

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

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