also nen würfel / quader könnte man zb. so erstellen:
Code:
#include <irrlicht.h>
#include <iostream>
using namespace irr::video;
using namespace irr;
#pragma comment(lib,"..\\lib\\Irrlicht.lib")
int main()
{
IrrlichtDevice *device = createDevice(video::EDT_DIRECT3D9, core::dimension2d<s32>(640, 480), 32, false, false);
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgrRender = device->getSceneManager();
scene::ISceneManager* smgrTexture = smgrRender->createNewSceneManager();
scene::ICameraSceneNode* fpsCamera = smgrRender->addCameraSceneNodeFPS();
fpsCamera->setPosition(core::vector3df(0,0,-7));
device->getCursorControl()->setVisible(false);
video::ITexture* rt = 0;
scene::ICameraSceneNode* fixedCam = 0;
f32 cubeSize = 5.f;
video::SColor cubeColour(255,255,255,255);
irr::scene::SMeshBuffer* buffer = new irr::scene::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};
buffer->Indices.set_used(36);
for (s32 i=0; i<36; ++i)
buffer->Indices[i] = u[i];
buffer->Vertices.set_used(12);
buffer->Vertices[0] = video::S3DVertex(0,0,0, -1,-1,-1, cubeColour, 0, 1);
buffer->Vertices[1] = video::S3DVertex(1,0,0, 1,-1,-1, cubeColour, 1, 1);
buffer->Vertices[2] = video::S3DVertex(1,1,0, 1, 1,-1, cubeColour, 1, 0);
buffer->Vertices[3] = video::S3DVertex(0,1,0, -1, 1,-1, cubeColour, 0, 0);
buffer->Vertices[4] = video::S3DVertex(1,0,1, 1,-1, 1, cubeColour, 0, 1);
buffer->Vertices[5] = video::S3DVertex(1,1,1, 1, 1, 1, cubeColour, 0, 0);
buffer->Vertices[6] = video::S3DVertex(0,1,1, -1, 1, 1, cubeColour, 1, 0);
buffer->Vertices[7] = video::S3DVertex(0,0,1, -1,-1, 1, cubeColour, 1, 1);
buffer->Vertices[8] = video::S3DVertex(0,1,1, -1, 1, 1, cubeColour, 0, 1);
buffer->Vertices[9] = video::S3DVertex(0,1,0, -1, 1,-1, cubeColour, 1, 1);
buffer->Vertices[10] = video::S3DVertex(1,0,1, 1,-1, 1, cubeColour, 1, 0);
buffer->Vertices[11] = video::S3DVertex(1,0,0, 1,-1,-1, cubeColour, 0, 0);
buffer->BoundingBox.reset(0,0,0);
for (int i=0; i<12; ++i)
{
buffer->Vertices[i].Pos -= core::vector3df(0.5f, 0.5f, 0.5f);
buffer->Vertices[i].Pos *= cubeSize;
buffer->BoundingBox.addInternalPoint(buffer->Vertices[i].Pos);
}
irr::scene::SMesh * cubeMesh = new irr::scene::SMesh();
cubeMesh->addMeshBuffer(buffer);
irr::scene::ISceneNode * cubeSceneNode = smgrRender->addMeshSceneNode(cubeMesh);
cubeSceneNode->setMaterialTexture(0, driver->getTexture("..\\Media\\wall.bmp"));
cubeSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
while(device->run())
{
if (device->isWindowActive())
{
driver->beginScene(true, true, SColor(0, 0, 255, 0));
smgrRender->drawAll();
driver->endScene();
}
}
return 0;
}
Quelle: (C++) Add your own cube node