リファレンス URL:surface_set_target(index);

「ブール型 (Boolean) 」として戻り値。

指定された Surface ID で draw 関数のターゲットを切り替える。

Surfaces が事前に作成されている必要があり、無事にターゲットを切り替えることができたら関数は戻り値として true を返す。失敗した場合は false 。



本来ブロックステートメント的に用いる関数で、ターゲットを切り替えたらまたターゲットを元に戻す処理( surface_reset_target )とセットで利用する。

surface_set_target(surf1);
draw_text(32, 32, "Surface1");
surface_reset_target();

複数のターゲットを扱う場合はターゲット毎にセット/リセットを組み合わせる。以下はダメな書き方。

surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();
//ターゲットを二つセットして、リセットは一度しか行われていない

正しい使い方はターゲットを切り替える毎にセットとリセットを行う。

surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_reset_target();
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();

上記コードは以下のように書いても良い。

surface_set_target(surf1);
draw_text(32, 32, "surface1");
surface_set_target(surf2);
draw_text(32, 64, "surface2");
surface_reset_target();
surface_reset_target();

スクリプト・サンプル

/*
このコードは Surface というより views の仕組みが分かっていないと
訳がわからないと思われるため、views の仕組みを知らない場合は
まだ理解しなくてよい

※ views は負荷軽減のため、描画を交互に行うことができる
※ 本家のサンプルコード間違いがある
誤 if view_current = 0
正 if view_current == 0
*/
if view_current == 0
   {
   surface_set_target(surf);
   with (obj_Effect)
      {
      draw_self();
      }
   surface_reset_target();
   }
else
   {
   draw_surface(surf, 0, 0);
   }
Functions/surface_set_target

Leave a Reply

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

WordPress › Error

There has been a critical error on this website.

Learn more about troubleshooting WordPress.