テクスチャ・ブレンド機能


Game Maker Language リファレンス > 組み込み関数 用途別 > 2D グラフィック機能 > テクスチャ・ブレンド機能

テクスチャ・ブレンド機能

取得

各種設定

  • texture_preload()?
  • texture_set_priority()?
  • texture_get_width()?
  • texture_get_height()?
  • texture_set_interpolation():線形補間の有効無効を設定します
  • texture_set_interpolation_ext()?:シェーダー用に拡張した線形補間の設定をします
  • texture_set_blending()?
  • texture_set_repeat():テクスチャリピートの有効無効を設定します
  • texture_set_repeat_ext()?:シェーダー用に拡張したテクスチャリピートの設定をします
  • draw_set_blend_mode():描画ブレンドモードを設定します
  • draw_set_blend_mode_ext():拡張された描画ブレンドモードを設定します

2Dプリミティブ描画

頂点フォーマット

一般に、3D、特殊効果、複雑な描画プロセス、またはシェーダーの操作を開始するとき、GameMaker Studio 2が自動的に頂点データをセットアップして渡すため、使用されている頂点フォーマットについてあまり心配する必要はありません。 ただし、特に速度を上げる必要がある場合や、追加情報を渡したい場合は、独自の頂点データを作成してそれに合わせてフォーマットする必要がある場合があります。 たとえば、標準の頂点フォーマットには、x、y、zの3D位置、色(アルファ付き)、およびUVテクスチャ座標が含まれます。これらを自分で作成した場合、次のようになります。

vertex_format_begin();
vertex_format_add_position_3d();
vertex_format_add_colour();
vertex_format_add_textcoord();
my_format = vertex_format_end();

ただし、(たとえば)シェーダーを使用して頂点の位置を操作するだけの場合は、色やテクスチャのデータを渡す必要はありません。 この場合、次のように独自のフォーマットを作成します。

vertex_format_begin();
vertex_format_add_position_3d();
my_format = vertex_format_end();

頂点フォーマットを作成したら、プリミティブを作成するときに頂点プロパティを定義した順序を順守する必要があることに注意してください。 したがって、頂点フォーマットを位置、色、テクスチャ座標として定義した場合は、これらのプロパティを同じ順序でプリミティブに追加する必要があります。そうしないと、エラーが発生します。 また、他の動的リソースと同様に、頂点フォーマットにはメモリが必要であるため、vertex_format_delete()? を使用して不要な場合は削除する必要があることにも注意してください。

以下のセクションでは、定義された頂点フォーマットがシェーダー内で正しい属性にマッピングされる方法について説明します。


シェーダーへのマッピングフォーマット

すでに上で述べたように、頂点フォーマットは、次の5つの属性タイプ(適切なvertex_format_add_*() 関数を介して追加)を一緒に使用することによって構築されます。

  • Colour
  • Normal
  • Position
  • 3D Position
  • Texture coordinate

GLSL ESシェーダー内では、これらの種類は次の4つの属性を使用して認識されます。

  • Colour
  • Normal
  • Position
  • Texture coordinate

https://docs2.yoyogames.com/source/_build/3_scripting/4_gml_reference/drawing/primitives/vertex%20formats/index.html

頂点フォーマット関数

  • vertex_format_begin():頂点フォーマットの定義を開始します
  • vertex_format_add_colour():頂点フォーマットの定義に色情報を追加します
  • vertex_format_add_position():頂点フォーマットの定義に座標情報を追加します
  • vertex_format_add_position_3d()?
  • vertex_format_add_textcoord()?
  • vertex_format_add_normal()?
  • vertex_format_add_custom()?
  • vertex_format_end():頂点フォーマットの定義を終了し、それを扱うハンドルを返します
  • vertex_format_delete()?

プリミティブの構築

重要
作成するプリミティブは、頂点フォーマット関数を使用して設定したフォーマットに従う必要があるため、位置データのみを使用して頂点フォーマットを定義した場合、カラーデータを使用してプリミティブを作成しても意味がありません。 構築するプリミティブにプロパティを追加する順序は、頂点フォーマットを作成するときにこれらのプロパティを追加した順序によって定義されることに注意してください。したがって、順序の位置、色、およびテクスチャを使用してベクターフォーマットを定義した場合 座標では、これらのプロパティを同じ順序でビルドされるプリミティブに追加する必要があります。そうしないと、エラーが発生します。

頂点バッファ

  • vertex_create_buffer():新しい頂点バッファを作成します
  • vertex_create_buffer_ext()?
  • vertex_create_buffer_from_buffer()?
  • vertex_create_buffer_from_buffer_ext()?
  • vertex_get_buffer_size()?
  • vertex_get_number()?
  • vertex_delete_buffer()?

プリミティブの構築

  • vertex_begin():頂点バッファへの書き込みを開始します
  • vertex_colour()?
  • vertex_normal()?
  • vertex_position()?
  • vertex_position_3d()?
  • vertex_argb()?
  • vertex_texcoord()?
  • vertex_float1()?
  • vertex_float2()?
  • vertex_float3()?
  • vertex_float4()?
  • vertex_ubyte4()?
  • vertex_end():頂点バッファへの書き込みを終了します
  • vertex_freeze()?
  • vertex_submit():書き込んだ頂点バッファの情報をGPUに送信します

プリミティブ構築コードの例

v_buff = vertex_create_buffer();
vertex_begin(v_buff, global.my_format);
vertex_position(v_buff, 10, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 0, 0);
vertex_position(v_buff, 110, 10);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 0);
vertex_position(v_buff, 110, 110);
vertex_colour(v_buff, c_white, 1);
vertex_texcoord(v_buff, 1, 1);
vertex_end(v_buff);
var tex = sprite_get_texture(spr_Background);
shader_set(shader_prim);
vertex_submit(v_buff, pr_trianglelist, tex);
shader_reset();

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件



これまでの訪問者: 3867
今日の訪問者: 1
昨日の訪問者: 1
閲覧者: 4