我正在尝试重新创建这里使用的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);发布于 2012-09-27 10:16:03
这看起来像是添加了索引,特别是一组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);垂直度是位置的列表,索引显示使用它们的顺序(基于它们在垂直度中的位置)。
如果三角形共享点,则可以重用顶点的索引-如果三角形不是共面的,这将使三角形之间的边界变软,或者您可以在同一位置创建多个顶点,从而允许使用硬边。
https://stackoverflow.com/questions/12551533
复制相似问题