日本語表示が出来ると何かと便利そうなので、irrlichtにirrlichtMLを上書き。
Linux(Ubuntu)用にちょっとだけ書き換えればLinuxに対応するので、そのメモ。
※バージョンは irrlicht 1.7.1 と irrlichtML を想定した、メモ。
irrklangの替わりに、SDL_mixerを使ったDemoのコンパイルのメモもついでに書いておこう。
_/_/_/_/ _/_/_/_/ _/_/_/_/
ファイル include/IrrCompileConfig.h の変更。
#define _IRR_USE_INPUT_METHOD
↓
#ifdef _IRR_WINDOWS_
#define _IRR_USE_INPUT_METHOD
#endif
_/_/_/_/ _/_/_/_/ _/_/_/_/
◆ IMETestの Makefile を作る。
example/IMETestのディレクトリ名をexample/29.IMETestに変更する。
そのディレクトリに、example/01.HelloWorldからMakefileをコピーして持ってくる。
数ヶ所、変更する。
Target := 01.HelloWorld
↓
Target := 29.IMETest
Sources := main.cpp
↓
Sources := CGUITTFont.cpp main.cpp
CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS)
↓
CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS) -I/usr/include/freetype2/
all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11
↓
all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11 -lfreetype
◆ IMETestの irrUString.h の修正
1883行を #ifdef _IRR_WINDOWS_
1899行を #endif
にする。
※Windows以外では replace(uchar32_t toReplace, uchar32_t replaceWith) 関数が消える事になる。(コンパイル時にエラーが出るので、激しく適当な応急処置。)
◆ IMETestの main.cpp へのLinux(ubuntu)対応の追記
197行あたりに、1行を追加。
// Load fonts
#ifdef _IRR_WINDOWS_ //←この行を追加
wchar_t windir[512];
230行あたりに、9行を追加。
fonts[5] = CGUITTFont::createTTFont(env, tmp, 24);
#endif
#else /*_IRR_WINDOWS_*/ //←この行
#define FONTPATH L"/usr/share/fonts/truetype" //←この行
fonts[0] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSans.ttf", 12); //←この行
fonts[1] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSans.ttf", 24); //←この行
fonts[2] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSerif.ttf", 12); //←この行
fonts[3] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSerif.ttf", 24); //←この行
fonts[4] = CGUITTFont::createTTFont(env, FONTPATH L"/ttf-japanese-gothic.ttf", 12); //←この行
fonts[5] = CGUITTFont::createTTFont(env, FONTPATH L"/ttf-japanese-gothic.ttf", 24); //←この行
#endif /*_IRR_WINDOWS_*/ //←この行
font = fonts[0];
font2 = fonts[1];
※gccの場合、swprintf()などでwchar_tの文字列を使うときは、%sではなく%lsになるので注意。例 swprintf(tmp, 511, L"%ls/freefont/FreeSans.ttf", windir);
_/_/_/_/ _/_/_/_/ _/_/_/_/
サンプルのDemoで、irrklangの替わりにSDL_mixerを使う方法。
◆ examples/Demo/Makefile で、1行追加。
all_linux: LDFLAGS += -lSDL_mixer -lSDL
◆ examples/Demo/CDemo.h で、2行書き換え。
#define USE_IRRKLANG
//#define USE_SDL_MIXER
↓
//#define USE_IRRKLANG
#define USE_SDL_MIXER
◆ examples/Demo/CDemo.cpp で、1行書き換え。
if (Mix_OpenAudio(22050, AUDIO_S16, 2, 128))
↓
if (Mix_OpenAudio(22050, AUDIO_S16, 2, 1280))
※前はバッファを1024にしていたが、自分の一部のPC環境では長時間使っているとたまに無音になる不具合が発生したので、若干増やして1280にして様子見。
_/_/_/_/ _/_/_/_/ _/_/_/_/
各々のコンパイルと、サンプルの実行。
◆ 本体のコンパイル(デフォだとデバッグ用設定になっていて、最適化されていない)
$ cd source/Irrlicht
$ make
◆ サンプルのコンパイル
$ cd ../../examples
$ make
◆ サンプルのお試し
$ cd ../bin/Linux
$ ./29.IMETest
ttf-japanese-gothic.ttf(VLフォント)って綺麗ですな~。
ファイル名はIMETestだが、LinuxではIME制御のコードを一切書いていないっす…。
表示だけ対応させたのみ。
誰か書いて。
お願いエロい人。
Linux(Ubuntu)用にちょっとだけ書き換えればLinuxに対応するので、そのメモ。
※バージョンは irrlicht 1.7.1 と irrlichtML を想定した、メモ。
irrklangの替わりに、SDL_mixerを使ったDemoのコンパイルのメモもついでに書いておこう。
_/_/_/_/ _/_/_/_/ _/_/_/_/
ファイル include/IrrCompileConfig.h の変更。
#define _IRR_USE_INPUT_METHOD
↓
#ifdef _IRR_WINDOWS_
#define _IRR_USE_INPUT_METHOD
#endif
_/_/_/_/ _/_/_/_/ _/_/_/_/
◆ IMETestの Makefile を作る。
example/IMETestのディレクトリ名をexample/29.IMETestに変更する。
そのディレクトリに、example/01.HelloWorldからMakefileをコピーして持ってくる。
数ヶ所、変更する。
Target := 01.HelloWorld
↓
Target := 29.IMETest
Sources := main.cpp
↓
Sources := CGUITTFont.cpp main.cpp
CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS)
↓
CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS) -I/usr/include/freetype2/
all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11
↓
all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11 -lfreetype
◆ IMETestの irrUString.h の修正
1883行を #ifdef _IRR_WINDOWS_
1899行を #endif
にする。
※Windows以外では replace(uchar32_t toReplace, uchar32_t replaceWith) 関数が消える事になる。(コンパイル時にエラーが出るので、激しく適当な応急処置。)
◆ IMETestの main.cpp へのLinux(ubuntu)対応の追記
197行あたりに、1行を追加。
// Load fonts
#ifdef _IRR_WINDOWS_ //←この行を追加
wchar_t windir[512];
230行あたりに、9行を追加。
fonts[5] = CGUITTFont::createTTFont(env, tmp, 24);
#endif
#else /*_IRR_WINDOWS_*/ //←この行
#define FONTPATH L"/usr/share/fonts/truetype" //←この行
fonts[0] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSans.ttf", 12); //←この行
fonts[1] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSans.ttf", 24); //←この行
fonts[2] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSerif.ttf", 12); //←この行
fonts[3] = CGUITTFont::createTTFont(env, FONTPATH L"/freefont/FreeSerif.ttf", 24); //←この行
fonts[4] = CGUITTFont::createTTFont(env, FONTPATH L"/ttf-japanese-gothic.ttf", 12); //←この行
fonts[5] = CGUITTFont::createTTFont(env, FONTPATH L"/ttf-japanese-gothic.ttf", 24); //←この行
#endif /*_IRR_WINDOWS_*/ //←この行
font = fonts[0];
font2 = fonts[1];
※gccの場合、swprintf()などでwchar_tの文字列を使うときは、%sではなく%lsになるので注意。例 swprintf(tmp, 511, L"%ls/freefont/FreeSans.ttf", windir);
_/_/_/_/ _/_/_/_/ _/_/_/_/
サンプルのDemoで、irrklangの替わりにSDL_mixerを使う方法。
◆ examples/Demo/Makefile で、1行追加。
all_linux: LDFLAGS += -lSDL_mixer -lSDL
◆ examples/Demo/CDemo.h で、2行書き換え。
#define USE_IRRKLANG
//#define USE_SDL_MIXER
↓
//#define USE_IRRKLANG
#define USE_SDL_MIXER
◆ examples/Demo/CDemo.cpp で、1行書き換え。
if (Mix_OpenAudio(22050, AUDIO_S16, 2, 128))
↓
if (Mix_OpenAudio(22050, AUDIO_S16, 2, 1280))
※前はバッファを1024にしていたが、自分の一部のPC環境では長時間使っているとたまに無音になる不具合が発生したので、若干増やして1280にして様子見。
_/_/_/_/ _/_/_/_/ _/_/_/_/
各々のコンパイルと、サンプルの実行。
◆ 本体のコンパイル(デフォだとデバッグ用設定になっていて、最適化されていない)
$ cd source/Irrlicht
$ make
◆ サンプルのコンパイル
$ cd ../../examples
$ make
◆ サンプルのお試し
$ cd ../bin/Linux
$ ./29.IMETest
ttf-japanese-gothic.ttf(VLフォント)って綺麗ですな~。
ファイル名はIMETestだが、LinuxではIME制御のコードを一切書いていないっす…。
表示だけ対応させたのみ。
誰か書いて。
お願いエロい人。