irrlichtを初期化して、空のウィンドウを表示します。
irrlichtは初期化と同時にウィンドウを生成してくれるので、CreateWindowなどのAPIを呼び出す必要はありません。

| #include
<tchar.h> #include <irrlicht.h> #ifdef WIN32 #include <windows.h> #endif using namespace irr; using namespace core; using namespace video; #ifdef WIN32 int WINAPI _tWinMain( HINSTANCE,HINSTANCE,LPTSTR,int ) #else int main( int,TCHAR* ) #endif { // irrlichtを初期化。 IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<u32>(480,360)); //ビデオドライバーを取得 IVideoDriver* driver = device->getVideoDriver(); // タイトルバー文字列設定 device->setWindowCaption(_T("Hello World!")); // 描画ループ while(device->run() && driver) { driver->beginScene(true, true, video::SColor(255,0,0,255)); driver->endScene(); } // デバイスの削除 device->drop(); return 0; } |
| #include
<tchar.h> #include <irrlicht.h> #ifdef WIN32 #include <windows.h> #endif |
まず、必要なヘッダファイルをインクルードします。UNICODEとマルチバイトに対応するためtchar.hを、
次にirrlichtを使用するためにirrlicht.hを、最後にWindows環境の場合のみwindows.hをインクルードします。
#define WIN32とはWindows上でのみ定義されるプリプロセッサで、メイン関数の部分も、環境により
main関数かWinMain関数に定義されます。
using namespace irr; using namespace core; using namespace video; |
irrlichtのクラスや定数、関数は全て名前空間に振り分けられています。
いちいちirr::video::~~と書くのは面倒なのでusing機能で省略します。
| irr | 全てのクラスや関数、定数が含まれている空間。 | |||
| irr::core | ベクトル、平面、配列、リストが含まれてる空間。 | |||
| irr::gui | グラフィカルユーザーインターフェイスを簡単に作成するための便利なクラスが含まれている空間。 | |||
| irr::io | 入力/出力用のインターフェイスが含まれている空間。 | |||
| irr::scene | シーン管理、メッシュ読み込みやビルボードなどの高レベル描画インターフェイスが含まれている空間。 | |||
| irr::scene::quake3 | quake3?関係が含まれている空間。 | |||
| irr::video | ビデオドライバにアクセスする機能や2D、3Dのレンダリングなどの低レベル描画インターフェイスが含まれている空間。 | |||
| // irrlichtを初期化。 IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<u32>(480,360)); //ビデオドライバーを取得 IVideoDriver* driver = device->getVideoDriver(); // タイトルバー文字列設定 device->setWindowCaption(_T("Hello World!")); |
irrlichtを使用するにはまず、irrlichtデバイスを作成しなければならないので、createDeviceでirrlichtのデバイスを作成します。createDeviceの引数は左から、描画エンジン、画面の大きさとなっています。描画エンジンには
Direct3D8,9、OpenGL、ソフトウェアを選べますが、今回はOpenGLにします。dimension2dは二次元座標を表すテンプレートクラスです。デバイスを作成すれば、irrlichtのエンジンにアクセスできるようになります。
次に作成したデバイスの関数getVideoDriverを使用して、irrlichtのビデオドライバーを取得します。
ビデオドライバーは基本的な描画やプリミティブ(三角形や頂点)単位の描画を行う際に使用します。
最後にsetWindowCaption関数でウィンドウのタイトル文字列をHello World!に設定しています。
| // 描画ループ while(device->run() && driver) { driver->beginScene(true, true, video::SColor(255,0,0,255)); driver->endScene(); } |
irrlichtの描画ループです。device->run()はirrlichtのウィンドウが閉じられるまでtrueを返します。
beginSceneはバックバッファや深度バッファ、ステンシルバッファなどのクリアを行い、endSceneはバックバッファをフロントバッファに表示します。irrlichtの描画命令はこのbeginSceneとendSceneの間に書きます。
| // デバイスの削除 device->drop(); |
irrlichtデバイスを削除します。正確には参照カウントを1減らしています。使い終わったら、”create”で始まる関数で取得したオブジェクトは、drop()で削除しましょう。
初期化して、ウィンドウを表示しただけですがどうでしょうか?難しかったですか?irrlichtは日本語の資料が少なく、英語が苦手な人はそれだけで投げてしまいそうですね。もしわからないところがあれば、リンクにあるirrlichtの日本語サイトか、コメント板にどうぞ。Windows7でしか動作確認していないので、あしからず。
Direct3Dを触ったことがある人は、気づいたと思いますが、irrlichtの関数の形式はそっくりですね。
beginSceneとBeginScene、dropとRelease、createDeviceとDirect3DCreate9など。
では。