IRRLICHT は,C 言語ベースの3次元エンジンです. IRRLICHT は,画像(カラー,モノクロ)の描画、2次元グラフィックス、3次元グラフィックス,イベント処理(マウス,キーボード等)の機能をもったゲームエンジンの決定版です. 文字の描画 (unicodeも可), 画像ファイル読み書きの機能もありますし,スライダやボタンなどのGUI部品もあるので,困ることはありません.
【関連する外部ページ】: http://lesson.ifdef.jp/index.html ・・・ Irrlicht プログラム集
【外部ページへのリンク】 http://www.zgock-lab.net/irrlicht/tut01.htm
【外部ページへのリンク】 https://irrlichtstg.ifdef.jp/
【外部ページへのリンク】http://www.realintegrity.net/~irr/index.php?FrontPage
Irrlicht のインストールが終わっていること.
Irrlicht のインストールが終わっていること.
Irrlicht を使ってウインドウを開くだけのプログラムです.ウインドウサイズ,背景色,タイトルなどは簡単に変更できる.
#ifdef WIN32 #include<windows.h> #endif #include<irrlicht.h> using namespace irr; using namespace core; using namespace scene; using namespace video; using namespace io; using namespace gui; #pragma comment(lib, "Irrlicht.lib") class MyEventReceiver : public IEventReceiver { public: virtual bool OnEvent(const irr::SEvent& e) { // mouse event if (e.EventType == irr::EET_MOUSE_INPUT_EVENT) { fprintf(stderr, "%d, %d, %lf, %d\n", e.MouseInput.X, e.MouseInput.Y, e.MouseInput.Wheel, e.MouseInput.ButtonStates ); switch(e.MouseInput.Event) { case EMIE_MOUSE_MOVED: { fprintf(stderr, "[Mouse] moved, %d, %d\n", e.MouseInput.X, e.MouseInput.Y); break; } case EMIE_LMOUSE_PRESSED_DOWN: { fprintf(stderr, "[Mouse] Left mouse button was pressed down\n"); break; } case EMIE_RMOUSE_PRESSED_DOWN: { fprintf(stderr, "[Mouse] Right mouse button was pressed down\n"); break; } case EMIE_MMOUSE_PRESSED_DOWN: { fprintf(stderr, "[Mouse] Middle mouse button was pressed down\n"); break; } case EMIE_LMOUSE_LEFT_UP: { fprintf(stderr, "[Mouse] Left mouse button was left up\n"); break; } case EMIE_RMOUSE_LEFT_UP: { fprintf(stderr, "[Mouse] Right mouse button was left up\n"); break; } case EMIE_MMOUSE_LEFT_UP: { fprintf(stderr, "[Mouse] Middle mouse button was left up\n"); break; } case EMIE_LMOUSE_DOUBLE_CLICK: { fprintf(stderr, "[Mouse] Left mouse button double click\n"); break; } case EMIE_RMOUSE_DOUBLE_CLICK: { fprintf(stderr, "[Mouse] Right mouse button double click\n"); break; } case EMIE_MMOUSE_DOUBLE_CLICK: { fprintf(stderr, "[Mouse] Middle mouse button double click\n"); break; } case EMIE_MOUSE_WHEEL: { fprintf(stderr, "[Mouse] mouse wheel was moved, %lf\n", e.MouseInput.Wheel); break; } } /* switch */ } /* if */ // keyboard event if (e.EventType == irr::EET_KEY_INPUT_EVENT) { fprintf(stderr, "%d, %d, %d, %d, %d\n", e.KeyInput.Char, e.KeyInput.Key, e.KeyInput.PressedDown, e.KeyInput.Shift, e.KeyInput.Control); if (e.KeyInput.PressedDown){ fprintf(stderr, "[Keyboard] press down, %d\n", e.KeyInput.Key); } else { fprintf(stderr, "[Keyboard] up, %d\n", e.KeyInput.Key); } return true; } return false; } }; #ifdef WIN32 INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else int main() #endif { const int width = 640; const int height = 480; // MyEventReceiver receiver; // start up an engine video::E_DRIVER_TYPE driverType; #ifdef WIN32 driverType = video::EDT_DIRECT3D9; #else /* driverType = video::EDT_OPENGL; */ driverType = video::EDT_SOFTWARE; /* driverType = video::EDT_SOFTWARE2; */ #endif static IrrlichtDevice *device = createDevice( driverType, /* windowSize */ core::dimension2d<u32>(width, height), /* bits */ 16, /* fullscreen */ false, /* stencilbuffer */ false, /* vsync */ false, /* IEventReceiver */ &receiver ); if (device == 0) return 1; video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* scenemgr = device->getSceneManager(); gui::IGUIEnvironment* guienv = device->getGUIEnvironment(); gui::IGUIFont* font = guienv->getBuiltInFont(); device->setWindowCaption(L"simple test"); // draw everything while(device->run() && driver) { driver->beginScene(true, true, video::SColor(255,0,0,255)); /* scenemgr->drawAll(); */ driver->endScene(); } // delete device device->drop(); return 0; }
Ubuntu でのコンパイル操作の手順例
g++ -I/usr/include/irrlicht hoge.cc -lIrrlicht
キーボード のキーコード, マウスの X,Y 座標値,マウスホイールの動き、マウスのクリックなどについての情報が表示されることが分かる