ビットマップファイルからASCIIフォントを読み込む

16進数の配列になっていたところをファイルから読み込むように改造してみた。
はじめはネットから適当にダウンロードしてくるつもりだったのだが、
何か日本語フォントを全部読み込むとか、アルファ値付きのテクスチャフォントなど
うちのやりたいことにフィットするミニマムなサンプルが無かったのでフォントを自作することに決定。
Gimpを使って1ドットずつ打って白黒2値のASCIIフォントを作った。
視点移動時などにリアルタイムで位置情報を画面の端っこに表示する準備ができた。

from Image import *
# 16文字x16文字の2値カラーの画像ファイルから
# 128文字分のディスプレイリストを作成する
def makeRasterFontFromBitmap(file, letter_width, letter_height):
  global fontOffset

  glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
  fontOffset=glGenLists(128)

  bitmap = open("font.bmp")
  for code in range(128):
    x=(code % 16)*letter_width
    y=(code / 16)*letter_height
    letter=bitmap.crop([x, y, x+letter_width, y+letter_height]).transpose(FLIP_TOP_BOTTOM)

    glNewList(fontOffset+code, GL_COMPILE)
    glBitmap(letter_width, letter_height, 0.0, 0.0, letter_width, 0.0, letter.tostring())
    glEndList()