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;
}
... 실행은 다음을 생성합니다
잔디가 그리드 있어야된다는 점을 제외 괜찮
... 어떤 16x16 사각형의 삼각형이 어떤 이유로 든 잘리는 것처럼 보입니다. 또한 이것은 윈도우의 뷰포트 내에 완전히있는 삼각형 만 표시되므로 삼각형이 화면에 부분적으로 만 표시되는 것과 관련이있는 것으로 나타납니다. 이 문제를 어떻게 해결할 수 있습니까?
추가 :
OS : 우분투 10.04 64 비트
으로 Irrlicht 버전 :
흠 좋은 것은 기억. – RolandiXor