OSG 日本語 - eiichiromomma/CVMLAB GitHub Wiki

(OSG) 日本語

標準のまま日本語が使えたので、そのやり方について(2.x)

osgTextでの対応

freetype2を使ってTrueTypeフォントに対応いる上にosgTextはwchar_tやらunicodeやら、ちゃんとしたMultibyte対応をしている。 setTextのソースを見ると分かるがwchar_tにも対応させている。

やり方

  1. setFontで日本語フォントを渡す
  2. setTextでwchar_tの文字列を渡す 具体的には以下のような例になる。
    osg::ref_ptr<osgText::Font> font = osgText::readFontFile( "fonts/msgothic.ttc" );
    .......
    osg::ref_ptr<osgText::Text> text = new osgText::Text;
    text->setFont( font.get() );
    text->setFontResolution( 128, 128 );
    text->setColor( white );
    text->setCharacterSize( .4f );
    text->setPosition( osg::Vec3( 0.f, 0.f, -1.04f ) );
    text->setAxisAlignment( osgText::Text::XZ_PLANE );
    text->setAlignment( osgText::Text::CENTER_TOP );
    text->setText( L"ようこそ OSG の世界へ" );
    geode->addDrawable( text.get() );

文字列がwchar_t(ワイド文字リテラル)であることをL接頭辞によって明確にする必要があるのがミソ。 当然だがフォントファイルを参照できるように、OSG_FILE_PATHで指定したフォルダのfontsフォルダの中にc:\Windows\Fonts\msgothic.ttcをコピーしておく。 ちなみに↑のスクリーンショットで使っているのは別のフォント。