.. default-domain:: cpp ======================================= コントロールのプライオリティについて ======================================= ウィンドウをレンダリングする際、メッシュを用います。 メッシュはテクスチャ一つに対して一つ用意されます。 これによって、コントロールの数が増えてもドローコールが増えないようになっています。 ただし、コントロール間のプライオリティについては気を付ける必要があります。 同一テクスチャ(=同一メッシュ)内で1回のドローコールでレンダリングされるコントロール間では、柔軟にプライオリティの変更が可能です。 それに対して、別のテクスチャ(=異なるメッシュ)間でのプライオリティは、テクスチャ間のプライオリティに依存します。 最初に、テクスチャでソートされ、次に同一テクスチャ内でプライオリティでソートされることになります。 例えば、次のウィンドウはメッシュ(テクスチャ)が4つで構成されています。 .. image:: images/CtrlPriority.png このウィンドウは、フォントメッシュとテクスチャメッシュから構成されています。 * fn40 * fn30 * 100_000_00001 * 100_010_00000 同一のテクスチャIDが指定されているとき ------------------------------------------ コントロールのプロパティである、 :ref:`PRIORITY` によって設定可能です。 :ref:`PRIORITY` の値が大きいほど手前に表示されます。 :: BUTTON(Button) { ID = 001_000_00010; POSITION = 100,100; SIZE = 64; PRIORITY = 5; }; .. プライオリティが同一の時 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ プライオリティが同一の時は、コントロールの種類に応じて自動的にソートされます。 上にあるものほど、手前にレンダリングされます。 * SCROLLBAR * LISTBOX * LISTBOXEX * CONTAINER * TEXT * RICHTEXT * LOG * LOGTEXT * BUTTON * CHECKBOX * RADIO * HELPBUTTON * EDITBOX * TEXTBOX * METER * ICON * CARD * TEXTURE * RENDER * RENDERICON * RECASTICON * LINE * LABEL * FRAME * BAR テクスチャIDが異なるとき ------------------------------------------ テクスチャIDが異なるときは、コントロールのプライオリティよりもテクスチャのZオフセットが優先されます。 テクスチャのZオフセットを設定するには、WINDOWのプロパティである、 :ref:`TEXTURE_ZOFFSET` を使います。 値が大きいものほど、奥に表示されます。 :: WINDOW(100_100_00010) { TEX_ID = DEFAULT_TEXTURE; STYLE = POPUP|NOFRAME|NOTITLEBAR; TEXTURE_ZOFFSET = 100_100_00000,-1; TEXTURE_ZOFFSET = 100_010_00000,1; POSITION = 0,0; SCREEN = 0,0,{100},{-BASEY}; SIZE = WIN_W,WIN_H; }; .. この例では、次の順番に表示されます。 * 100_100_00000 手前 * DEFAULT_TEXTURE * 100_010_00000 再背面 .. note:: Zオフセットを明示的に指定しなかったとき、デフォルトテクスチャとして設定したメッシュより手前に、レンダリングされるようにシステム側でZオフセットを設定します。 その順番はシステム側で処理されるため、厳密に制御が困難です。 3枚以上のテクスチャを一つのウィンドウで使うときは、明示的に :ref:`TEXTURE_ZOFFSET` を指示するようにしてください。 .. note:: レンダーターゲットとして生成されたメッシュについても、 :ref:`TEXTURE_ZOFFSET` でレンダリング順序を指定可能です。 :ref:`RENDER` 、 :ref:`RENDERICON` を参照ください。