OpenGL 学習メモ その1「カメラを作る」

  最終更新日: 05/10/22

はじめに


OpenGLで 画面上でちょっとした座標や変数の値を表示するだけでも、フォント、テクスチャ、ビルボード の問題をクリアする必要があります。

このページでは、 Allegro +AllegroGL(OpenGL ) + GlyphKeeper(FreeType)を使って、
必要最低限の自由度が保証される、カメラのひな形をつくることにしました。
これによって、画面上で値の確認ができ、試行錯誤がしやすくなります。
なお、このプログラムの使用については自己責任でお願いします。

  • OpenGLのカメラ
  • 初期設定を疑似2D投影にすることにより、最初はZ軸の存在を省略することができる。
  • OpenGLの 二次元図形の描画 ( Push/PoPMatrix と Displaylist )
  • カメラ視点を変える。今まで2D見えていたオブジェクト は実は 3D上の平面。Z軸の存在。
  • OpenGLの 三次元図形の描画
  • glOrtho とgluPerspective ,glfrustum の違い
  • スクリーンに表示される要素 各部分にOpenGLのコードを追加する。
    試行錯誤(キー入力による、視点の変更や、回転アニメーション)

    使い方


    キーボードの操作:
  • A, S ..... ビルボード(茶色の四角形)のズーム
  • F, R ..... カメラ Z 軸 にズーム
  • →↑↓←......矢印キーでカメラ X,Y軸を中心に回転
  • ESC .........終了
    カメラ角度は 0〜360度 で 補正
  • 3Dモデルを映すカメラの初期位置は、Z軸に垂直になっています。
    テキストとビルボードは カメラの行列を共用しているので、ともにZ軸に垂直に位置しています。
  • 変数/モード表示      :  テキスト要素 を扱う部分に  追加する。
  • 疑似 2Dスプライトのテスト : ビルボード要素を扱うbillboard(); に コードや、テクスチャ等を追加する。
  • 3Dモデル/その他キー入力 : 3Dモデルを扱うdisplay(); に 追加する。 / keyboard(); に追加
  • テキスト、ビルボード、3Dモデル は、カメラ行列 を OpenGL の popMatrix と pushMatrix 関数によって、
    スタックに退避、復帰させ、切替えを行ってます。

    テキストを描画する場合は(X,Y)座標を指定するだけでOK 、TrueType,OpenTypeフォントが使用できますが、OpenGL上での日本語の表示がまだできません。
    数値を表示する場合は、いったん文字列に変換する必要があります。

    サンプル ソース 1

  • 必要アプリケーション:Xcode , 必要なフォント:デフォルトで ヒラギノを読み込む , ファイルパスがない場合は、TrueTypeフォントを読むディテクトリは build ディレクトリが起点となる。
  • 必要ライブラリ: Allegro , GlyphKeeper, AllegroGL , (OpenGL , FreeType)
  • Xcode の リンカ設定(※各ライブラリをインストール済みであること/ -lglyph-allegrogl の名前は場合に応じて )
    -L/usr/local/lib -lagl -lglyph-allegrogl -lfreetype -lalleg-main -framework OpenGL -framework Carbon -framework Carbon -framework Cocoa

    ソース (UTF8で保存)