リファレンス URL:surface_create(width, height);

「実数 (Real) 」として戻り値。

Surface を新規作成します。座標は不要なので矩形領域の縦横サイズだけを指定します。戻り値として Surface ID を返すので、これを変数に格納して管理します。ID を管理するための変数はスコープがグローバルである方が望ましい。

Surfaces は GPU のメモリ上にテクスチャ・データとして格納され、以降 GPU のメモリ上に追加されたスプライト・リソース的な利用が可能。

また作成した Surface はメモリ上から削除されない限りグローバル的に利用できます。このため Surfaces ID を管理する変数は、インスタンス変数やローカル変数だとスコープが届かない場合もあるため注意。



surface_create 関数では GPU メモリ上にデータ領域を確保しただけなので、その領域には他アプリなどで使っていたテクスチャなどデータがゴミとして残っている可能性があります。このゴミを消してまっさらな状態にする必要があるため、領域確保の後、速やかに draw_clear_alpha 関数で塗りつぶし処理をしてこれを初期化とします。

テクスチャのデータサイズはハードウェア毎に仕様と上限が異なり、しかし基本的にあまり大きなサイズを指定して領域確保するべきではなりません。

This function is used to create a surface and will return the index of the surface which should be stored in a variable for future function calls. When the surface is first created, it may contain "noise" as basically it is just an area of memory that is put aside for the purpose (and that memory may still contain information), so you may want to clear the surface before use with a function like draw_clear_alpha.

It is highly recommended that all surfaces be created with a size that is a power of 2, ie: 16, 128, 512 or 1024 pixels in size, for example. This is not exactly necessary on certain platforms (like Windows and MacOS) but it will certainly increase compatibility on those targets, while for HTML5 and devices it is essential and very it's important that you remember this or you may run into problems later.


スクリプト・サンプル
if !surface_exists(surf) { surf = surface_create(1024, 1024); surface_set_target(surf); draw_clear_alpha(c_black, 0); surface_reset_target(); view_surface_id[0] = surf; };
Functions/surface_create

Leave a Reply

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