読者です 読者をやめる 読者になる 読者になる

glSpriteFont

OpenGL でスプライトフォントを描画するライブラリをしばらく前に作りました。
(スプライトフォント: 事前に使う文字を 1 枚のテクスチャにしておき、quad に切り出してに描く方法)
FTGL はもはや古すぎるし大げさすぎるので、機能は必要最小限で、レガシーな OpenGLAPI を使わない文字描画手段が欲しいというのが動機です。
フォントテクスチャは、葉迩倭さん作のゲームエンジン Selene に付属のツールで作成したものを使います。

ソース & バイナリ。フォントテクスチャ作成ツールも含みます。
https://github.com/i-saint/glSpriteFont (一括ダウンロード)

現状 OpenGL 3.0 以降を前提とした作りですが、そのうち OpenGL ES 2.0 にも対応する予定です。



使用例:

glIFontRenderer *font = CreateGLSpriteFont("font.sff", "font.png");
font->setScreen(0.0f, float(window_width), float(window_height), 0.0f);

// ...

font->setMonospace(false);
font->setSpacing(1.0f);
font->setSize(24.0f);

font->setColor(1.0f, 1.0f, 1.0f, 1.0f);
font->addText(10.0f, 10.0f, "ABCDEFGあいうえお");
font->addText(10.0f, 40.0f, "やったー!日本語出たよー!");

font->setColor(0.6f, 0.6f, 1.0f, 1.0f);
font->addText(10.0f, 70.0f, L"文字色変更");

font->setColor(1.0f, 0.0f, 0.0f, 1.0f);
font->setSize(30.0f);
font->addText(10.0f, 100.0f, L"文字サイズ変更");

font->setColor(1.0f, 1.0f, 1.0f, 1.0f);
font->setSize(24.0f);
font->setMonospace(true);
font->setSpacing(0.75f);
font->addText(10.0f, 130.0f, L"以下等幅");
font->addText(10.0f, 160.0f, "ABCDEFGあいうえお");

font->setSpacing(1.2f);
font->addText(10.0f, 190.0f, L"スペース幅変更");

font->flush();

// ...

font->release();

結果