2010-11-22 12 views
5

मैं निम्नलिखित कोड है:इस जाल में त्रिकोणों को क्यों फिसल रहा है?

#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; 
} 

... जो जब रन निम्नलिखित का उत्पादन:

alt text

... जो सिवाय इसके कि घास एक ग्रिड माना जाता है ठीक है 16x16 वर्गों का और ऐसा लगता है कि कुछ त्रिकोणों को किसी कारण से फिसल दिया जा रहा है। यह भी प्रतीत होता है कि त्रिभुजों के साथ स्क्रीन पर केवल आंशिक रूप से प्रदर्शित होने के साथ कुछ करना है क्योंकि खिड़की के व्यूपोर्ट में पूरी तरह से त्रिभुज प्रदर्शित होते जा रहे हैं। मैं इसे कैसे ठीक करूं?

अतिरिक्त:

ओएस: उबंटू 10.04 64-बिट
Irrlicht संस्करण: 1.7 बीटा

उत्तर

3

बाहर कर देता है कि समस्या यह है कि मैं सॉफ्टवेयर रेंडरर उपयोग कर रहा था के बजाय था ओपनजीएल रेंडरर।

तो लाइन 13:

IrrlichtDevice *device = 
    createDevice(EDT_SOFTWARE, dimension2d<unsigned int>(640, 480), 16, 
     false, false, false, 0); 

बन जाता है:

IrrlichtDevice *device = 
    createDevice(EDT_OPENGL, dimension2d<unsigned int>(640, 480), 16, 
     false, false, false, 0); 
+1

हम्म अच्छा बात को याद है। – RolandiXor

संबंधित मुद्दे