1.ウインドウ表示
今後のlessonでの基本となるウインドウを作成します。

ライブラリとインクルードファイルの設定
1.windows用にwindows.hをインクルードします。
2.#pragma commentで指定したライブラリを検索します。
3.irrlicht.hも忘れずにインクルードします。
#ifdef WIN32
#include <windows.h>
#pragma comment(lib, "Irrlicht.lib")
#endif
#include <irrlicht.h>
|
namespaceの設定
irrlichtでは、irr::core::dimension2dという様に定義されています。
毎回、長い名前を記述するのは大変なので、namespaceを使用します。
namespaceを使用することで、irr::core::dimension2dは「dimension2d」ですむようになります。
videoやsceneなどもあるので、同様にnamespcaeで指定しておきましょう。
(irr,core,gui,io,scene,videoを指定しておけば、今後楽になるかもしれません。)
using namespace irr;
using namespace core;
using namespace video;
using namespace scene;
|
main関数の指定
通常はmainでよいのですが、WinMainを使用することで、邪魔なコンソールウインドウを非表示にします。
プロジェクトを作成する際に、「Win32 コンソールアプリケーション」を指定して、mainを記述することで、
windowsでもコンソールウインドウが表示されるようになります。
#ifdef WIN32
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE
hPrevInst, LPSTR strCmdLine, int nShowCmd)
#else
int main()
#endif
{
|
デバイスとドライバの設定
デバイスとは画用紙(ウインドウ)で、以下のようなものを指定することができます。
・どのドライバを使用するか
・ウインドウのサイズはどうするか
・フルスクリーンにするかどうか
ドライバとは絵を描く画家です。画家がいないと、画面には何も描くことができません。
IrrlichtDevice *device =
createDevice(EDT_OPENGL,dimension2d<s32>(320,240),16,false,false,false);
IVideoDriver *driver = device->getVideoDriver();
|

createDevice
Irrlichtデバイスを作成します。Irrlichtデバイスは、エンジンのルートオブジェクトになる大事なものです。
IrrlichtDevice* createDevice(
E_DRIVER_TYPE deviceType = EDT_SOFTWARE,
const dimension2d<s32>& windowSize = dimension2d<s32>(640,480),
u32 bits = 16,
bool fullscreen = false,
bool stencilbuffer = false,
bool vsync = false,
IEventReceiver* receiver = 0,
const c8* sdk_version_do_not_use = IRRLICHT_SDK_VERSION
)
|
deviceType デバイスのタイプを指定します。以下を指定できます。
EDT_NULL
EDT_SOFTWARE
EDT_BURNINGSVIDEO
EDT_DIRECT3D8
EDT_DIRECT3D9
EDT_OPENGL
windowSize ウインドウのサイズを指定します。
bits bit深度を指定します。(フルスクリーンのみ)
fullscreen フルスクリーンモードで起動するかどうかを指定します。
stencilbuffer ステンシルバッファを使用するかどうかを指定します。
vsync 垂直同期を行うかどうかを指定します。(フルスクリーンのみ)
receiver イベントを受け取るオブジェクトを指定します。
sdk_version_do_not_use SDKのバージョンチェックで使用するので、変更しないでください。
|
ウインドウのキャプションを設定
作ったウインドウに名前をつけます。
キャプション名の左に「L」がついていますが、これはirrlichtエンジンでワイド文字を使用するためです。
//ウインドウタイトル設定
device->setWindowCaption(L"IrrLicht");
|
メインループを記述
画用紙があるうち(runとは、ウインドウが実行している間=ウインドウが閉じるまで)はループします。
beginSceneで描画を開始(塗りつぶし)し、endSceneで終了します。
(ここでは、画面を塗りつぶしては終了する、という動作を繰り返していることになります。)
今後は、beginSceneとendSceneの間に、描画の指示をすることになります。
while(device->run())
{
driver->beginScene(true,true,0xFF6060FF);
driver->endScene();
}
|

beginScene
描画の開始命令です。描画をする前に必ず呼び出さなければいけません。
bool beginScene(
bool backBuffer,
bool zBuffer,
SColor color
)
|
backBuffer colorパラメータで指定した値で、描画バッファをクリアするかどうか指定します。
zBuffer Zバッファをクリアするかどうかを指定します。
color 描画バッファをクリアする色を指定します。
0xAARRGGBBで指定することもできます。値はそれぞれ0x00〜0xFFで指定します。
AA:アルファ値(無視されます)
RR:赤の要素
GG:緑の要素
BB:青の要素
|
後始末
「create」を使用して作成したものは必ず「drop」で開放して下さい。
device->drop();
return 0;
}
|
以上で、青で塗りつぶされただけのウインドウが表示されます。
ダウンロード
今回作成したファイル一式です。
宿題
1.画面のサイズを(640,480)にしてみましょう。
2.画面の色を赤にしてみましょう。
|
|