Surfaces に関する説明の前に、Application Surface と Draw 機能について。

このエントリーをはてなブックマークに追加

Application Surface

GM:Studio では Application Surface に対して常時描画を行っています。

Application Surface は GM:Studio 独自の用語であり、バックバッファとフロントバッファで構成されます。

Application Surface は画面(スクリーン)に絵を描くためのキャンバスに近いイメージです。このキャンバスは描画処理(Draw)のために常時利用され、そして GML の Draw 関数はデフォルトだと Application Surface に対して利用されるようレンダリングのターゲットが設定されています。

surface 関数とは

Application Surface の上にレイヤーとして重ねて描画できる追加的 Surface を作る機能などを提供するのが GML の surface 関数です。キャンバスの上にもう一枚新しいキャンバスを載せるイメージ

Surface 関数によって新規作成された Surface は GPU のメモリ上にテクスチャとして確保されます。

Draw 関数は先に述べた通り、Application Surface に対して描画を行うようデフォルトターゲットが決定されていますから、追加された Surface に Draw 関数を使って何か描くためにはターゲットを切り替える必要があります。

Draw のターゲット切り替えも Surface 関数がサポートしている機能の一つです。ターゲットを切り替えることによって、GML の draw 系関数は Application Surface 以外の surface に対して描画処理を加えることができるようになるのです。

Application Surface には直接手を加えず、その上に任意サイズの矩形領域をレイヤースクリーンとして作成し、そのレイヤーに対して(そのレイヤーをターゲットにして) draw で描画を行う。レイヤーを作成する機能とターゲットを Application Surface から Surface に切り替える機能が surface 関数の主な役割です。

手順を確認しよう、しかしその前に……

手順としては若干複雑にならざるを得ないため、GM:Studio 初心者はまだ surface に触らない方が良いです。使いこなせば便利というより、強力な描画機能を使いこなして表現を追求するパワーユーザ向けの機能です。

知識としては変数のスコープが若干絡んでくるのと、Surface が GPU のメモリ上に確保される仕様上、GPU のメモリ上から Surface が削除されてしまう可能性を考慮したコードの書き方が必要になります。

Surface 関数の役割は、Draw のターゲットを一時的に切り替える処理が含まれ、一時的に切り替えたターゲットを元に戻す処理、必要な初期化処理なども含めるとステートメントも一行二行では済まなくなります。

次のページへ

Leave a Reply

Your email address will not be published. Required fields are marked *