-1
我想用irrlicht自己生成多維數據集。我有一個二維地圖,每個立方體應該代表一個牆磚。我想要將所有這些立方體放在一個網格中。這是一個測試,應該畫我10 * 1 * 10立方體:Irrlicht自定義多維數據集瓦片
f32 cubeSize = 5.0f;
video::SColor cubeColour(255,255,255,255);
SMeshBuffer * buffer = new SMeshBuffer();
u16 u[36] = { 0,2,1, 0,3,2, 1,5,4, 1,2,5, 4,6,7, 4,5,6,
7,3,0, 7,6,3, 9,5,2, 9,8,5, 0,11,10, 0,10,7};
int vertcount = 0;
int indicescount = 0;
for (int x = 0; x < 10; x ++){
for (int y = 0; y < 10; y ++){
buffer->Vertices.set_used(vertcount + 12);
buffer->Vertices[vertcount++] = video::S3DVertex(0,0,0, -1,-1,-1, cubeColour, 0, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(1,0,0, 1,-1,-1, cubeColour, 1, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(1,1,0, 1, 1,-1, cubeColour, 1, 0);
buffer->Vertices[vertcount++] = video::S3DVertex(0,1,0, -1, 1,-1, cubeColour, 0, 0);
buffer->Vertices[vertcount++] = video::S3DVertex(1,0,1, 1,-1, 1, cubeColour, 0, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(1,1,1, 1, 1, 1, cubeColour, 0, 0);
buffer->Vertices[vertcount++] = video::S3DVertex(0,1,1, -1, 1, 1, cubeColour, 1, 0);
buffer->Vertices[vertcount++] = video::S3DVertex(0,0,1, -1,-1, 1, cubeColour, 1, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(0,1,1, -1, 1, 1, cubeColour, 0, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(0,1,0, -1, 1,-1, cubeColour, 1, 1);
buffer->Vertices[vertcount++] = video::S3DVertex(1,0,1, 1,-1, 1, cubeColour, 1, 0);
buffer->Vertices[vertcount++] = video::S3DVertex(1,0,0, 1,-1,-1, cubeColour, 0, 0);
//buffer->BoundingBox.reset(0,0,0);
for (int i = vertcount - 12; i < vertcount; ++i) {
buffer->Vertices[i].Pos -= vector3df(0.5f, 0.5f, 0.5f);
buffer->Vertices[i].Pos *= cubeSize;
buffer->Vertices[i].Pos += vector3df(x * cubeSize, 0, y * cubeSize);
// buffer->BoundingBox.addInternalPoint(buffer->Vertices[i].Pos);
}
indicescount += 36;
buffer->Indices.set_used(indicescount);
for (s32 i = indicescount - 36; i < indicescount; i+=3) {
buffer->Indices[i] = u[(i) % 36] += x * cubeSize;
buffer->Indices[i + 1] = u[(i + 1) % 36] = 0; //cubeSize;
buffer->Indices[i + 2] = u[(i + 2) % 36] += y * cubeSize;
}
}
}
SMesh * cubeMesh = new SMesh();
cubeMesh->addMeshBuffer(buffer);
ISceneNode * cubeSceneNode = smgr->addMeshSceneNode(cubeMesh);
cubeSceneNode->setMaterialFlag(EMF_LIGHTING, false);
但這一切都搞砸了。我不知道用於「指數」,這可能是主要問題。所以,是的,如何做到這一點?如果有人知道如何使正常人正常以及有關它把2層的質地準備,告訴我:)
這是我第一次做的。但是這樣我得到了錯誤的閃電:/這是一個屏幕:[鏈接](http://s14.directupload.net/images/140328/2qyiamvm.png),我用一個節點,它會變得更快,因爲我tryed meshcombiner類,這是一個很好的加速(但這並沒有解決燈光,只支持一個紋理通道)。 – user3458589
嗨對不起,我沒有回來給你,但我正忙着工作,現在我無法查看你的圖像鏈接,因爲它正在標記爲'色情'!?所以如果你能提供替代形象,它會給我一些想法。也許你應該看看已經存在的着色器? – XAMlMAX