0

我正在尝试重新创建此处使用的 Ogre 代码(在 Irrlicht 中): http ://dave.uesp.net/wiki/Block_Land_3

对于这部分代码:

MeshChunk->position(x, y,   z+1);   MeshChunk->normal(-1,0,0);  MeshChunk->textureCoord(0, 1);

我这样做了:

SMesh* Mesh = new SMesh();

SMeshBuffer *buf = 0;
buf = new SMeshBuffer();


Mesh->addMeshBuffer(buf);

buf->drop();

block_t Block;
block_t Block1;

int iVertex = 0;

buf->Vertices.reallocate(3);
buf->Vertices.set_used(3);
....
buf->Vertices[0] = S3DVertex(vector3df(x, y, z+1), vector3df(-1,0,0), SColor(255, 0,0,0), vector2df(0, 1));

但是如何翻译:

MeshChunk->triangle(iVertex, iVertex+1, iVertex+2);
4

1 回答 1

0

这看起来像是在添加索引,特别是一组 3 个顶点索引;

buf->Vertices[0] = S3DVertex(vector3df(x, y, z+1), vector3df(-1,0,0), SColor(255, 0,0,0), vector2df(0, 1));
buf->Vertices[1] = S3DVertex(vector3df(x, y+1, z+1), vector3df(-1,0,0), SColor(255, 0,0,0), vector2df(0, 1));
buf->Vertices[2] = S3DVertex(vector3df(x, y+1, z), vector3df(-1,0,0), SColor(255, 0,0,0), vector2df(0, 1));
buf->Vertices[3] = S3DVertex(vector3df(x, y, z), vector3df(-1,0,0), SColor(255, 0,0,0), vector2df(0, 1));


buf->Indices.push_back(0);
buf->Indices.push_back(1);
buf->Indices.push_back(2);
//MeshChunk->triangle(iVertex, iVertex+1, iVertex+2);

buf->Indices.push_back(2);
buf->Indices.push_back(3);
buf->Indices.push_back(0);
//MeshChunk->triangle(iVertex+2, iVertex+3, iVertex);

Verticies 是一个位置列表,Indices 显示使用它们的顺序(基于它们在 Verticies 中的位置)。

如果三角形共享点,您可以重用顶点索引 - 如果三角形不共面,这将使三角形之间的边界变软,或者您可以在同一位置创建多个顶点,从而允许硬边。

于 2012-09-27T02:16:03.180 回答