OpenGLはテキストを表示するための標準的方法を提供してはくれない。 アルファベットだけならまだしも日本語となるとさらにやっかい。 でも、SDL_ttf を使うことで日本語テキストをサーフェイス(SDL_Surface)に出力することができる。 このプログラムでは、新たに Font クラスを導入する。 文字列からサーフェイスを得る方法を知ることができる。 サーフェイスにしてしまえばテクスチャにする方法はもう簡単だね。
ただし、SDL_ttf に入力するためには(たぶん)文字コードをUTF-8にしなければならない。 UTF-8 の日本語文字コードを得るための方法は色々ある。 プログラム自体をUTF-8にしておくというのも一つの方法。 だが、この方法だとVC++が認識できない文字列が存在するとコンパイルを拒否される。 このサンプルでは「text.txt」というファイルに UTF-8 で表示対象となる文字列を書いておき、 実行時に読み込むという方法を採っている。 他にもICUを使った日本語の表示などの方法がある。
上図は、本サンプルプログラムのスクリーンショットである。
ソースコード
解説
このプログラムには一部だが Windows 依存の記述がある。 それは Font::getFont メソッドだ。 フォントが置いてあるディレクトリを取得する一般的方法が無いため、 このメソッドでは Windows 依存となる SHGetSpecialFolderPath 関数を使ってフォントディレクトリを取得している。 UNIX 系で Font クラスを使うためには、Font::getFont メソッドを書き換える必要がある
SHGetSpecialFolderPath関数を使うためには、shell32.libを追加する必要がある。
コメント
最新の10件を表示しています。 コメントページを参照