Game Maker Language リファレンス > 組み込み関数 用途別 > 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_*() 関数を介して追加)を一緒に使用することによって構築されます。
GLSL ESシェーダー内では、これらの種類は次の4つの属性を使用して認識されます。
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();