コントロールのプライオリティについて¶
ウィンドウをレンダリングする際、メッシュを用います。
メッシュはテクスチャ一つに対して一つ用意されます。
これによって、コントロールの数が増えてもドローコールが増えないようになっています。
ただし、コントロール間のプライオリティについては気を付ける必要があります。
同一テクスチャ(=同一メッシュ)内で1回のドローコールでレンダリングされるコントロール間では、柔軟にプライオリティの変更が可能です。
それに対して、別のテクスチャ(=異なるメッシュ)間でのプライオリティは、テクスチャ間のプライオリティに依存します。
最初に、テクスチャでソートされ、次に同一テクスチャ内でプライオリティでソートされることになります。
例えば、次のウィンドウはメッシュ(テクスチャ)が4つで構成されています。
このウィンドウは、フォントメッシュとテクスチャメッシュから構成されています。
fn40
fn30
100_000_00001
100_010_00000
同一のテクスチャIDが指定されているとき¶
プライオリティが同一の時¶
プライオリティが同一の時は、コントロールの種類に応じて自動的にソートされます。
上にあるものほど、手前にレンダリングされます。
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のプロパティである、 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 再背面
注釈
Zオフセットを明示的に指定しなかったとき、デフォルトテクスチャとして設定したメッシュより手前に、レンダリングされるようにシステム側でZオフセットを設定します。 その順番はシステム側で処理されるため、厳密に制御が困難です。 3枚以上のテクスチャを一つのウィンドウで使うときは、明示的に TEXTURE_ZOFFSET を指示するようにしてください。
注釈
レンダーターゲットとして生成されたメッシュについても、 TEXTURE_ZOFFSET でレンダリング順序を指定可能です。 RENDER 、 RENDERICON を参照ください。