~Irrlicht Tutorial1~ The Begining....
posted on 10 Nov 2008 18:30 by apemon-chan in game-programingหลังจากที่ได้แนะนำถึงการติดตั้งengineนี้ไปคร่าวๆแล้ว คราวนี้เราจะมาลองทดลองใช้งานมันให้เป็นรูปเป็นร่างมากขึ้น โดยจะนำcodeที่ได้ทดลองคราวที่แล้วมาอธิบายงับ
เริ่มต้นก่อนการใช้งานทุกครั้ง เราจะต้องincludeมันก่อนงับ(อันนี้ ใครที่เป็นCคงรู้ดีอยู่แล้ว)
#include
ต่อมาการที่เราจะcompileผ่านได้ เราจะต้องlinkมาที่librariesของirrlichtงับ
#pragma comment(lib, "Irrlicht.lib")
ต่อมาเราจะมาจัดการเกี่ยวกับnamespaceงับ โดยirrlichtจะมีnamespaceต่างๆดังนี้(ดูได้docของirrlicht)
irr เก็บทุกอย่างของirrlicht
irr::core เก็บพวกคลาสพื้นฐาน เช่น พวกvector,matrix4
irr::gui จัดการพวกgui
irr::io
irr::scene
irr::video จัดการเรี่ยงเกี่ยวกับการrender
using namespace irr;
สร้างirrlicht deviceที่จะเป็นตัวหลักของโปรแกรม
IrrlichtDevice *device =
createDevice(video::EDT_DIRECT3D9, core::dimension2d<s32>(640, 480));
อันนี้จะสร้างโดยใช้directx9ในการrender ถ้าต้องการใช้ตัวอื่นให้เปลี่ยนEDT_DIRECT3D9เป็นตัวอื่น
OpenGL - EDT_OPENGL
DirectX 8 - EDT_DIRECT3D8
DirectX 9 - EDT_DIRECT3D9
Software - EDT_SOFTWARE
ต่อมาสร้างSceneManagerเพื่อใช้จัดการsceneต่างๆ
scene::ISceneManager* smgr = device->getSceneManager();
สร้างVideoDriverเพื่อใช้จัดการเรื่องการrenderภาพ
video::IVideoDriver* driver = device->getVideoDriver();
while loopสำหรับใช้จัดการrender sceneต่างๆ
while(device->run())
{
driver->beginScene(true, true, video::SColor(0,200,200,200));
smgr->drawAll();
driver->endScene();
}
ใช้งานเสร็จก็ลบdeviceทิ้ง
device->drop();
เท่านี้ก็เป็นอันจบงับ หลายคนอาจจะงงกับcodeนี้(แน่นอนเป็นผมผมก็งง)ก็เป็นเพราะเรายังไม่เห็นภาพการใช้งานจิงงับ ซึ่งต่อๆไปเมื่อเราได้ทำอย่างอื่นเ้พิ่มเติมไป เช่น สร้างกล่องเราจะได้เห็นการใช้งานของSceneManagerที่ชัดเจนขึ้นงับ ส่วนอันนี้ สรุปcodeทั้งหมดนะครับ
#include
#pragma comment(lib, "Irrlicht.lib")
using namespace irr;
int main(){
IrrlichtDevice *device =
createDevice(video::EDT_DIRECT3D9, core::dimension2d(640, 480));
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
while(device->run())
{
driver->beginScene(true, true, video::SColor(0,200,200,200));
smgr->drawAll();
driver->endScene();
}
device->drop();
return 0;
}

#1 By book on 2008-11-10 21:26