アットウィキロゴ

3. 初期化~ウィンドウ表示まで

*概要                      

 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機能で省略します。
 


 ・irrlichtの名前空間の一覧表

irr 全てのクラスや関数、定数が含まれている空間。
irr::core ベクトル、平面、配列、リストが含まれてる空間。
irr::gui グラフィカルユーザーインターフェイスを簡単に作成するための便利なクラスが含まれている空間。
irr::io 入力/出力用のインターフェイスが含まれている空間。
irr::scene シーン管理、メッシュ読み込みやビルボードなどの高レベル描画インターフェイスが含まれている空間。
irr::scene::quake3 quake3?関係が含まれている空間。
irr::video ビデオドライバにアクセスする機能や2D、3Dのレンダリングなどの低レベル描画インターフェイスが含まれている空間。

 
・irrlichtの初期化

// 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の描画命令はこのbeginSceneendSceneの間に書きます。

 

・デバイスの破棄

    // デバイスの削除
    device->drop();

 irrlichtデバイスを削除します。正確には参照カウントを1減らしています。使い終わったら、”create”で始まる関数で取得したオブジェクトは、drop()で削除しましょう。

 


 

 初期化して、ウィンドウを表示しただけですがどうでしょうか?難しかったですか?irrlichtは日本語の資料が少なく、英語が苦手な人はそれだけで投げてしまいそうですね。もしわからないところがあれば、リンクにあるirrlichtの日本語サイトか、コメント板にどうぞ。Windows7でしか動作確認していないので、あしからず。
Direct3Dを触ったことがある人は、気づいたと思いますが、irrlichtの関数の形式はそっくりですね。
beginSceneとBeginScene、dropとRelease、createDeviceとDirect3DCreate9など。

では。

最終更新:2011年06月06日 02:34
添付ファイル