よくある質問
Q.Irrlichtはどう発音すればいいのですか?
A.自由にどうぞ。日本ではイルリヒトかイルリッヒが多いです。ネイティブの発音ではィルリッヒ(ィにアクセント)と聞こえます。
Q.自由に使っていいのでしょうか?
A.改変、商用、研究、その他いかなる事へも特別の許可なく使用出来ます。別途ライセンス料を請求される事もありません。ただし、最低限の規約があります。詳しくはライセンス を参照。
Q.DirectX9 SDK Update - (Feb. 2007)にDirectX8のヘッダがなくてコンパイル出来ません(公式フォーラム)
A.IrrCompileConfig.hから以下の行を見つけてコメントアウトしてください。DirectX8の機能がオフになります。
#define _IRR_COMPILE_WITH_DIRECT3D_8_
なお、DirectX8はDirectX 9.0 SDK Update - (December 2004)までサポートされていたようです。Vistaで開発するのでなければ、古いSDKを使うのが無難でしょう(※VC6ならDirectX 9.0 SDK Update - (October 2004)を使用)
Q.アニメーションファイルを読み込ませたが動作が遅いです(もしくは速い)
A.setAnimationSpeed()で調節しましょう。
#include <windows.h>
#include <irrlicht.h>
using namespace irr;
using namespace core;
using namespace video;
using namespace scene;
#pragma comment(lib, "Irrlicht.lib")
int main()
{
IrrlichtDevice *Device = createDevice(EDT_OPENGL, dimension2d<s32>(640, 480), 32, false, false, 0);
IVideoDriver *Driver = Device->getVideoDriver();
ISceneManager *Scene = Device->getSceneManager();
Scene->addCameraSceneNode(0, vector3df(1000,500,-40), vector3df(0,0,0));
IAnimatedMesh *SydneyMesh = Scene->getMesh("tiny.x");
IAnimatedMeshSceneNode *SydneyNode = Scene->addAnimatedMeshSceneNode( SydneyMesh );
SydneyNode->setMaterialFlag(EMF_LIGHTING, false);
SydneyNode->setFrameLoop(0, 5000); //tinyの歩きフレームを設定
SydneyNode->setAnimationSpeed(5000);//5000frame/secでアニメーション
while(Device->run())
{
Driver->beginScene(true, true, SColor(0,100,100,160));
Scene->drawAll();
Driver->endScene();
}
Device->drop();
return 0;
}
Q.Ver.1.2からVer.1.3へバージョンアップしたら自前のSceneNodeがコンパイルできません
A.関数名が変更になりました。下記の5つを変更してください。
公式の更新履歴では、OnPreRender()はOnAnimate()に、OnPostRender()はOnRegisterSceneNode()へ置換すればいい、と書いてあります。これは記載ミスで逆です。
virtual void OnPostRender(u32 timeMs) → virtual void OnAnimate(u32 timeMs)
virtual void OnPreRender() → virtual void OnRegisterSceneNode()
SViewFrustrum → SViewFrustum
virtual video::SMaterial& irr::scene::ISceneNode::getMaterial(s32 num) → virtual video::SMaterial& irr::scene::ISceneNode::getMaterial(u32 num)
virtual s32 irr::scene::ISceneNode::getMaterialCount() → virtual u32 irr::scene::ISceneNode::getMaterialCount()
Q.Visual C++ 2005 Express Edition でビルドエラー。「プロジェクト : error PRJ0003 : 'cmd.exe' の起動中にエラーが発生しました。」
A.パスが通っていません。システムのプロパティの詳細設定、環境変数のPathの内容を確認。%SystemRoot%\system32を追加してください。既に追加されていても、もう一度書き直して再起動してみると改善することがあります。
もしくはVC2005のメニューから、[ツール]-[オプション]ウィンドウを表示。左のツリーから[プロジェクトおよびソリューション]-[VC++ディレクトリ]を選択。右上のドロップダウンリスト[ディレクトリを表示するプロジェクト]から「実行可能ファイル」を選択。そこに以下のパスを追加してください。
$(SystemRoot)\System32
$(SystemRoot)
$(SystemRoot)\System32\wbe
Q.コンソールウィンドウを非表示にしたい
A.[構成プロパティ]-[C/C++]-[プリプロセッサ]-[プリプロセッサの定義]から"_CONSOLE"定義を削除。[構成プロパティ]-[リンカ]-[システム]-[サブシステム]を、コンソール "(/SUBSYSTEM:CONSOLE)"から"Windows (/SUBSYSTEM:WINDOWS)"へ変更。ソースコードのメイン関数を"main"から"WinMain"に変えてください。"windows.h"も追加する必要があります。
ソースコードの書き換えが面倒に感じるならば、下記コードのようにプリプロセッサを利用して自動切換を行ってください。
#if !defined(_CONSOLE) && defined(WIN32)
#include
#endif
#if !defined(_CONSOLE) && defined(WIN32)
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
#else
int main (int argc, char* argv[])
#endif
{
return 0;
}

