glfw でフォントを使う

glfw でフォントを使うために OGLFT を導入したので備忘録として
環境は mac Lion なので他の環境で動くかどうかわからないし OpenGL でフォントを使うライブラリは他にもあると思う。ご参考までに。

OGLFT を使うと glut でも glfw でもシステムのフォントが使える。ただし日本語は化ける。

まず freetype2 が必要なので入れる。 FreeType Downloads ここからダウンロードページにとんでソースを落とす。

ソースを解凍してディレクトリを移動

./configure
make
sudo make install

次に OGLFT: OpenGL-FreeType Library からソースを落とす。

ソースを解凍してディレクトリを移動 (QT を使わない場合のやり方のみ。他のケースは README や configure のヘルプ参照)

./configure --disable-qt CPPFLAGS=-I/usr/local/include/freetype2 LDFLAGS='-framework OpenGL -framework GLUT'
make check

make check すると作業ディレクトリの tests ディレクトリにデモプログラムができるので動かしてみる。

cd tests
./demo /Library/Fonts/Ariel.ttf (使いたいフォントの絶対パス)

で動けば合格。あとは作業ディレクトリに戻って

sudo make install

QT など入れていない場合はこのままだと自分のプログラムをコンパイルすると大量のエラーメッセージがでるのでもう少し作業が必要。
作業ディレクトリに config というディレクトリがあるのでそこの config.h というファイルを OGLFT.h と同じディレクトリにコピーする。デフォルトでインストールした場合は /usr/local/include/oglft になっているはず。

cd config
sudo cp config.h /usr/local/include/oglft

つぎにOGLFT.h を編集する必要がある。上のほうに #include を追加

#ifndef OGLFT_H
#define OGLFT_H

#include <oglft/config.h>  <=== 一番上のあたりに

#include <cmath>
#include <map>
#include <list>
#include <vector>
#ifdef HAVE_MPATROL
#include <mpdebug.h>
#endif
#include <GL/gl.h>
#include <GL/glu.h>

以上で作業は終わり。デフォルトでインストールした場合はプログラムでは

#include

とインクルードする。

コンパイルの一例 (mac のターミナルでコンパイルする場合)
freetype2 は pkg-config が使えるので `pkg-config --libs --cflags freetype2`, OGLFT のほうは -loglft とする。 glfw も pkg-config を使う場合

g++ -O2 hoge.cc -o hoge -lm -loglft -framework OpenGL -framework Cocoa `pkg-config --libs --cflags libglfw freetype2`