OpenLayer2 メモ


 

OpenLayer

OpenLayerはAllegroから派生したC++言語のライブラリで、高速な2D表示にOpenGLを使用しており、TTFとPNGもオプションで対応しています。ライセンスは GNU Lesser General Public License (LGPL) C++で書かれたライブラリなので、Xcodeから使うには、main.c ソースを main.mm (ObjectiveC++ )として扱います。
  • 配布元
  • SVNアーカイブ
  • リファレンス(英語) OepnLayer 2.0 はOSXでビルドできないので SVNリポジトリ内の OpenLayer 2.0.1を使う。

    必要なライブラリは Allegro4.2.0、AllegroGL 0.4.0(とOpenGL)、GlyphKeeper(とFreeType)と、loadPNG(とlibpng)、Zlib。
    OpenLayer 2.0.1 をビルドするには makefileではなく 同梱されているcbuild を使う。

    インストール

    ターミナルから
    ./cbuild.c

    wish to drop〜support?
    〜のサポートを止めたいですか?と聞いてきます。

    Seting up for macosx environment
    Do you wish to drop PNG support? [y/N](PNG読込み)
    n
    Do you wish to drop TTF support? [y/N](TrueTypeフォント)
    n
    Do you wish to drop old API Support? [y/N](旧verとの互換性)
    n
    Do you wish to drop State Changes? [y/N]
    y...yes / n...no の意味。
    yかnで答えるとビルドが進行します。
    ./cbuild.c install
    インストールがうまく行かない場合はビルドディレクトリからファイルのコピーを手動で行う。
  • OpenLayerを解凍した場所の Include ディレクトリ内にある OpenLayer.hpp とOpenLayer ディレクトリを丸ごと/usr/local/include/にコピー。
  • 同じく、lib ディレクトリの内に生成された、 libopenlayer.a を/usr/local/lib/にコピー。

  • アンインストールするには ./cbuild.c uninstall
  • 最初の状態に戻すには、./cbuild.c clean

    リンカフラグには、ライブラリのファイル名に対応するフラグを与えます。
  • TTFフォントをサポートするなら -lglyph-allegrogl -lfreetype
  • PNGファイルをサポートするなら -lpng , -lloadpng -lz

    ただし、インストール時に、PNGサポートをやめる"y"を選択したのに、PNG画像を使うソースをコンパイルするとエラーが出たりします。また、cpp ファイルをコンパイルするのにg++ を使わず gcc を使ったりするとエラーがでます。


    サンプルプログラムのコンパイルと実行。

    TrueType フォントの表示
    cd demos/textdemo
    g++ Main.cpp -o textdemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lz -lpng -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    フォントを読み込み Hello world と表示。


    コリジョン(衝突判定)デモ
    cd demos/collisiondemo
    g++ Main.cpp -o collisiondemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lz -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    ESCで終了 カーソルキーで操作。スペースキーでポーズ。
    バウンドする四角形を操作し、体当たりで小さな四角形の弾を赤い領域に入れれば勝利。自分が赤い領域に入ったり、画面外に飛ばされたら負け。


    不明
    cd demos/gamedemo
    g++ Demo.cpp -o gamedemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lz -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    (古いバージョンの関数が使われているので、過去バージョンの互換性をサポートしなかった場合は、コンパイルに失敗します)


    マウスカーソル
    cd demos/shapedemo
    g++ Main.cpp -o shapedemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lpng -lz -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    カーソルが変化し、スクリーン上にマウスで、線を引くデモ。
    PNG画像を使っているので、インストール時に、PNGサポートをやめるで"y"を選択したした場合は無理です。

    画像表示のデモ
    cd demos/renderdemo
    g++ Main.cpp -o renderdemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lpng -lz -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    画像を読み込み表示する。


    ラインストリップのデモ
    cd demos/linestripdemo
    g++ Main.cpp -o linestripdemo -I/usr/local/Include/ -L/usr/local/lib/ -lopenlayer -lglyph-allegrogl -lfreetype -lloadpng -lz -lagl `allegro-config --libs` -framework OpenGL -framework Carbon
    PNGを使わない場合は、コメントアウトしておく。
    /* #include */
    メッセージ表示にTTFフォントを使っているので、Fonts ディレクトリを作って、フォントを入れる。
    稲妻のようなグニャグニャした線が引かれるデモ。Cキ−で、2色のグラデーション。Rキ−で始点と終端グラデーションが逆転、 ESCキーで終了。


  • API

    翻訳 私家版。
    ([タイトル] や、メンバ関数・メソッド名 をクリックすることで詳細を表示できます。)
    [カテゴリを全て開く/閉じる]

    [Bitmap] ビットマップデータの保持、スクリーン描画処理。
    ■Blit (ビットマップの描画)
    ■BlitRotated (ビットマップの回転)
    ■BlitStretched (ビットマップの伸張、縮小)
    ■BlitTransformed (ビットマップの 拡大縮小+回転)
    ■BlitDistorted (ビットマップの自由変形)
    ■Width (横幅取得)
    ■Height (縦幅取得)
    ■LoadListOfBitmaps (連番画像ファイルの読込み)
    ■GetPixel (ピクセルの色情報を調べる)
    ■Destroy ( global bitmaps をGFXとメモリから破棄)
    ■IsValid (ビットマップの読込判定)
    2■save (ビットマップの保存)
    2■CopyFromScreen (スクリーンショット)
    2■GetMemoryBitmap (Allegro ← penLayer間の メモリビットマップ取扱い)
    2■GetCollisionPoly (コリジョン属性をもったポリゴンを得る)
    2.01■SetDefaultPivot (ビットマップの指定した座標を回転の中心点に設定する)
    2.01■GetDefaultPivot (ビットマップに指定された、回転の中心点を取得する)

    Advanced functions
    2■GetPixelPacked (指定したピクセルの色データを32bit整数値で返す。)
    2■SendToGPU (グラフィックカードにビットマップデータをアップロードする)
    2■UnloadFromGPU (グラフィックカードからビットマップデータをアンロードし、データを破棄する。)
    2■Select (OpenGL のアクティブなテクスチャとして、ビットマップを選択する。)
    2■UseAutoDelete (選択したビットマップをプログラム終了時に自動的に破棄されるようにする)

    2■HasAlphaChannel (ビットマップにアルファチャンネルが含まれているか調べる)
    2■StartFastBlitting (高速描画モードを設定する)
    2■FastBlit (高速描画モードで描画する。)
    2■FinishFastBlitting (高速描画モードを終了する。)
    2■UnloadToMemory (グラフィックカードからビットマップデータをアンロードする)
    2■TexturedQuad (ビデオカードにテクスチャの生データをQUAD出力します)

    [Blenders] 2つの色を混色(ブレンド)させる処理
    [Canvas] カンバスは、描画対象となるサーフェスの情報を保持しています。**
    [Collision](コリジョン: 衝突判定)**

    [FpsCounter](Fps による 実行速度調整)

    [Placement](オブジェクトの位置・回転・伸張を司る、配置オブジェクト)**

    [GfxRend]基本図形を描画する関数 OpenLayer 2.0 で 廃止、Shape クラスへ移行

    [RenderMode] すべてのビットマップ描画モードの 基本クラス。
    これらは、複数の描画モードを統合、結合するのに使われます。2.0でほとんどの名称が変更されました。
    [Rgba] 4つの部分から構成される色データ: 赤、緑、青およびアルファチャンネル。
    [Settings]OpenLayer の設定に関するクラス。アンチエイリアシングやテクスチャ等

    [Setup]プログラムを初期化する関数 、OpenLayerを有効にするには、最初にこれらの関数を使う必要があります。
    このクラスは、マウス、キーボード、タイマー処理やウインドウ/スクリーンモード等、プログラムを初期化する関数を有している。
    [ Shape ] 図形全般 **
    ■Line  ( 2点を結ぶ直線 )
    ○GetIntersectionPoint 2つの直線の 交差地点 を得る
    ○Collides 衝突判定 true/false
    ○GetNormal 正規化された直線を得ます。

    Line-Parent Class
      Shape ■Rect ( 矩形 )
    ○DrawOutline 矩形の輪郭線
    ○SetAccuracy 矩形の角の正確さを指定します。
    ○SetRoundness 矩形の角の丸みを指定します。

    Rect-Parent Class
      Shape ■Ellipse  ( 楕円 及び 円 )
    ○DrawOutline 指定した色の輪郭線をもった楕円を描きます。
    ○DrawSlice 分割された楕円を描きます。扇形/グラデーションも。
    ○DrawDisk 内部が塗られた円盤を描画。グラデーションも。
    ○DrawDisk 内部が塗られた円盤の弧を描画。グラデーションも。
    ○SetRadius 指定した軸の半径を指定する。
    ○GetRadius 指定した軸の半径を得る。
    Ellipse-Derived Classes
    ○Circle 円 - 楕円の特別な形   


    Ellipse-Parent Class
      Shape ■LineStrip ( 連続した複数の座標をつないだ 直線 )
    ○SetTexture LineStrip にテクスチャを適用
    ○DisableTexture LineStrip のテクスチャを無効
    ○AddToEnd新しい頂点を、頂点リストの最後に追加
    ○AddToBegin新しい頂点を、頂点リストの最初に追加
    ○DeleteFirst LineStripの頂点リストの最初の頂点を削除
    ○DeleteLast LineStripの頂点リストの最後の頂点を削除
    ○GetVertex LineStripの頂点リストから指定したインデックスの 頂点を取得
    ○GetNumberOfVertices LineStripの頂点リストの総数を得ます

    LineStrip-Parent Class
      Shape ■Point ( 点 )
    ○StartFastDrawing DrawFast を用いる時に使う(初期化)
    ○DrawFast Draw の 高速版。 StartFastDrawing と FinishFastDrawing と組み合わせて使う。
    ○FinishFastDrawingDrawFast関数を使用した後には必ずこれを呼ぶ。
     
    Point-Parent Class
      Shape
    [TextRenderer]フォントコンテナを司るクラス、読込んだフォントは TextRenderer を使用して描画されます。

    [ Transforms]スクリーン全体の配置および色、変形

    [Vec2D]ベクトル関連のクラス。** 2■GetAngle ベクトルの角度 を得ます。
    2■Normalized ベクトルの正規化されたコピー を得ます。

    Advanced functions
    2■GetMagnitudeSquared(ベクトルの平方された大きさを返す。)

    2006.03.19 完成 2006.01.28

    Tsukubado