GPU制御


Game Maker Language リファレンス > 組み込み関数 用途別 > GPU制御

GPU制御

GPU制御命令 (gpu_*) を使用すると描画に関する高度な制御が可能です。例えばアルファブレンディングの無効化、カリング、テクスチャの補完のON/OFFなどです。これらの関数はスコープがグローバルであり、設定するとそれ以降のすべての描画に影響があることに注意してください。

GPUの値の取得

  • gpu_get_blendenable()?:ブレンドモードが有効かどうかを取得します
  • gpu_get_ztestenable()?:Zテストが有効かどうかを取得します
  • gpu_get_zfunc()?:Zテストの比較関数を取得します
  • gpu_get_zwriteenable()?:Z書き込みが有効かどうかを取得します
  • gpu_get_fog()?:デフォルトのシェーダーで使用されるフォグの設定を取得します
  • gpu_get_cullmode()?:カリングモードを取得します
  • gpu_get_blendmode():現在のブレンドモードを取得します
  • gpu_get_blendmode_ext()?:scr / dest が設定可能なブレンドモードの設定を取得します
  • gpu_get_blendmode_ext_sepalpha()?:scrカラー/ desカラー / scr alpha / dest alpha のブレンドモード設定を取得します
  • gpu_get_blendmode_src()?:ブレンドモードの scr の値を取得します
  • gpu_get_blendmode_dest()?:ブレンドモードの dest の値を取得します
  • gpu_get_blendmode_srcalpha()?:ブレンドモードの scr alpha の値を取得します
  • gpu_get_blendmode_destalpha()?:ブレンドモードの dest alpha の値を取得します
  • gpu_get_colorwriteenable()?:カラーチャンネルへの書き込み設定を取得します
  • gpu_get_alphatestenable()?:アルファテストが有効かどうかを取得します
  • gpu_get_alphatestref()?:アルファテストの境界値を取得します
  • gpu_get_texfilter()?:テクスチャの線形補間が有効かどうかを取得します
  • gpu_get_texfilter_ext()?:指定のサンプラーのテクスチャ線形補間が有効かどうかを取得します
  • gpu_get_texrepeat()?:テクスチャリピートが有効かどうかを取得します
  • gpu_get_texrepeat_ext()?:指定のサンプラーのテクスチャリピートを取得します

GPUの値の設定

  • gpu_set_blendenable()?:ブレンドモードの有効・無効を設定します
  • gpu_set_ztestenable()?:Zテストの有効・無効を設定します
  • gpu_set_zfunc()?:Zテストの比較関数を設定します
  • gpu_set_zwriteenable()?:Z書き込みの有効・無効を設定します
  • gpu_set_fog()?:デフォルトのシェーダーで使用されるフォグを設定します
  • gpu_set_cullmode()?:カリングモードを設定します
  • gpu_set_blendmode():ブレンドモードを設定します
  • gpu_set_blendmode_ext()?:scr / dest でブレンドモードを設定します
  • gpu_set_blendmode_ext_sepalpha()?:scrカラー/ desカラー / scr alpha / dest alpha でブレンドモードを設定します
  • gpu_set_colorwriteenable():カラーチャンネルへの書き込み許可を設定します
  • gpu_set_alphatestenable():アルファテストの有効・無効を設定します
  • gpu_set_alphatestref():アルファテストの境界となる値を設定します
  • gpu_set_texfilter():テクスチャ描画時の線形補間の有効・無効を設定します
  • gpu_set_texfilter_ext()?:指定のサンプラーのテクスチャ線形補間の有効・無効を設定します
  • gpu_set_texrepeat()?:テクスチャリピートの有効・無効を設定します
  • gpu_set_texrepeat_ext()?:指定のサンプラーのテクスチャリピートを設定します

GPUのステート

  • gpu_push_state()?:現在のGPU Stateを内部GPU状態スタックにプッシュします
  • gpu_pop_state()?:登録した GPU Stateスタックの上からポップします
  • gpu_get_state()?:現在のGPU State を ds_map として取得
  • gpu_set_state()?:指定された ds_map で GPU State を設定します

使用例


動的なレンダリングマスクを作成する方法(ステンシルのエミュレート)

(※この方法はステンシルのエミュレートなので、アルファを持った画像の転送が正常に行われない不具合がある)

// 1. アルファチャンネルを完全透過にする
gpu_set_blendenable(false); // ブレンドモード無効.
gpu_set_colorwriteenable(false,false,false,true); // アルファチャンネルのみ書き込みを許可する
draw_set_alpha(0); // アルファ値を 0 にする
draw_rectangle(0,0, room_width,room_height, false); // アルファ値のみを画面全体に書き込む

// 2. マスク用のアルファ値書き込み
draw_set_alpha(1); // アルファ値を 1 にする
draw_sprite(sMask,0, 32,32); // ※マスク用スプライトの書き込み
gpu_set_blendenable(true); // ブレンドモードを有効に戻す
gpu_set_colorwriteenable(true,true,true,true); // カラーチャンネルすべてを有効に戻す

// 3. マスクを使用して描画する
gpu_set_blendmode_ext(bm_dest_alpha,bm_inv_dest_alpha); // destのアルファ値のみのブレンドモードにする
gpu_set_alphatestenable(true); // アルファテストを有効にする
draw_sprite(sPlayer,0, mouse_x,mouse_y); // ※マスクを使用してスプライトを描画
gpu_set_alphatestenable(false); // アルファテストを無効に戻す
gpu_set_blendmode(bm_normal); // 通常のブレンドモードに戻す

参考ページ

ブレンドモード

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2024-03-07 2023-08-09 2023-05-21 2023-05-20 2023-05-04 2022-10-13 2022-07-21 2022-07-02 2022-04-06 2021-11-30 2021-11-26 2021-10-03 2021-09-23 2021-08-15 2021-06-02 2021-01-23 2021-01-21 2021-01-19 2021-01-18 2021-01-16 2021-01-15

人気の10件

今日の10件



これまでの訪問者: 1259
今日の訪問者: 2
昨日の訪問者: 0
閲覧者: 4