Aşağıdaki kod var:Bu örgüde neden üçgenler kırpılıyor?
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
int main(int argc, char** argv)
{
IrrlichtDevice *device =
createDevice(EDT_SOFTWARE, dimension2d<unsigned int>(640, 480), 16,
false, false, false, 0);
device->setWindowCaption(L"Train Simulator Demo");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
IAnimatedMesh* mesh1 = smgr->getMesh("media/simple_engine.b3d");
IAnimatedMesh* mesh2 = smgr->getMesh("media/simple_track.b3d");
IAnimatedMeshSceneNode* node1 = smgr->addAnimatedMeshSceneNode(mesh1);
IAnimatedMeshSceneNode* node2 = smgr->addAnimatedMeshSceneNode(mesh2);
if (node1)
node1->setMaterialFlag(EMF_LIGHTING, false);
if (node2)
{
node2->setMaterialFlag(EMF_LIGHTING, false);
node2->setMaterialTexture(0, driver->getTexture("media/grass.jpg"));
}
ICameraSceneNode * pCamera = smgr->addCameraSceneNode(0, vector3df(5,0,5), vector3df(0,0,0));
pCamera->setNearValue(0.5f);
pCamera->setFarValue(40.0f);
while(device->run())
{
driver->beginScene(true, true, SColor(0,0,0,0));
u32 cur_time = device->getTimer()->getTime();
float f_time = (float)cur_time/1000.0f;
// Change the camera
pCamera->setPosition(vector3df(sinf(f_time) * 8.0f ,3.0f ,cosf(f_time) * 8.0f));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
... koşmak aşağıdaki üretir:
çim ızgara olması gerekiyordu dışında gayet
... 16x16 kareden oluşuyor ve bazı üçgenlerin bir sebepten kırpıldığı görülüyor. Ayrıca, pencerenin sadece kısmen ekranda görüntülenen üçgenlerin görüntülendiği şekilde ekranda sadece kısmen görüntülenen üçgenlerle bir ilgisi olduğu anlaşılıyor. Bunu nasıl düzeltebilirim?
Ek:
OS: Ubuntu 10.04 64 bit
Irrlicht sürümü:
hmm iyi bir şey hatırlamak. – RolandiXor