« いろいろと見積もってみる | メイン | Layer Tree Owner »

2014年01月27日

吉里吉里Z 開発:: Window 抽象化機構

    

Window 抽象化機構の組み込みを検討している。
現在、プライマリレイヤーを生成する時、必ず Window オブジェクトを指定しなければならないようになっている。
これを Graphics Interface (仮) を持つオブジェクトであれば許容する構造にする。

Bitmap クラスを追加したので、ツール用途で Layer 単体で Window を生成せずに利用したいケースは減ったかもしれないが、これを Graphics Interface をもつほぼ何もしないオブジェクトを渡して、Window を作らずに Layer 処理できるように出来る。
また、何もしないのではなく、最終描画を Window ではなく、Bitmap に行うクラスを作り、描画更新があればイベントで通知される形であれば、レイヤーを更新しながら、更新通知を受けて Bitmap を順次保存していくことで動画を作ったりできる。

Window を持たないデバイスや環境への対応準備でもある。
タブレット/スマフォ、Windows ストアアプリ等、全画面利用が前提で Window がない環境では、Window クラスは足かせである。
この機構があれば、Graphics Interface を持つ任意クラスを作り、Window なしで動作させられる。
Window クラスがなければ、Window のインターフェイスのスタブ等を実装しなくて良くなる。
また、Window がないのに Window を生成したり、常にフルスクリーンなのに指定したり判定すると言った不自然な仕様をなくせる。
当然、対応させる場合には Window に依存したスクリプトは変更の必要が出るが。

ハードウェア描画対応の準備も兼ねている。
最初に Bitmap クラスに描画するクラス例を書いたが、それを Texture にして描画すれば、ハードウェア描画でビルボードの一部を従来のレイヤー機構を使って描画すると言ったことも可能になる。

Graphics Interface は、Layer や LayerManger から要求で、以下の機能が必要になる。
・描画処理
・マウスカーソル/キャプチャ解放処理
・ヒント設定処理
・サイズ変更通知
・文字入力/IME 制御
表示装置側から LayerManger への通知等で以下の機能が必要になる。
・Layer 等からの描画更新要求の中継
・システムからの再描画要求
・マウス入力の通知
・タッチ入力の通知
・キーボード入力の通知
・画面回転の通知

これら Graphics Interface が必要とする機能を実装すれば、レイヤー機構を使う様々な機能を組み込み可能となる。
ネットワーク越しに操作する等もやろうと思えば出来る。
必要とされる要件が分かりやすくなるので、移植なども行いやすくなる。
当然のことながら、従来の Window を Layer に指定して、描画する機能はそのまま利用できる。

Graphics Interface と言う名前は、いい名前が思い浮かばなかったのでとりあえず付けた。



投稿者 Takenori : 2014年01月27日 02:36




comments powered by Disqus
Total : Today : Yesterday : なかのひと