TSXStateRestorerオブジェクトは、レンダリングステートの記憶・変更・復元の便宜を図るオブジェクトです。
注意すべき点として、Memoryメソッドが実行されてから、Restoreメソッドが実行されるまでの間、SetTSS, SetRS以外の方法でテクスチャステージステートないしレンダリングステートが変更されると、正しく復元できない点があけられます。
以下にその例を示します。
SRをTSXStateRestorerオブジェクトとして読んで下さい。 //正しいコード例 //Memory〜Restoreの間、SetTSS, SetRSのみでステートの変更が行われている begin SR.Memory; SR.SetTSS(...); SR.SetRS(...); SR.Restore; end; DGをTDGCaradオブジェクトとして読んで下さい。 //悪いコード例1 //Memory〜Restoreの間、SetTSS,SetRS以外の方法で変更している begin SR.Memory; DG.D3DDevice.SetRenderState(...); SR.SetTSS(...); SR.Restore; end; srA, srB を、TSXStateRestorerオブジェクトとして読んで下さい。 //悪いコード例2 //srAのMemory〜Restoreの間に、srBのSetTSS,SetRSが割り込んでいる begin srA.Memory; srB.Memory; srB.SetTSS(...); srA.SetRS(...); srA.Restore; srB.Restore; end;
プロパティはありません
| コンストラクタ | Create |
| ステート設定 | SetSSS |
| SetRS | |
| SetTSS | |
| 操作 | Memory |
| Restore |
constructor Create(ADG:TDGCarad);
TSXStateRestorerオブジェクトを生成します。
TSXStateRestoreオブジェクトは、TSXScene.StateRestorerプロパティとして、TSXSceneオブジェクトに内蔵されているため、あまりユーザがこのオブジェクトを生成する、という事は無いでしょう。
ADGには、使用するTDGCaradコンポーネントを指定します。
function SetSSS(Stage:UINT; SSSType:D3DSAMPLERSTATETYPE; Value:DWORD):HRESULT;
Stageで指定されるテクスチャステージの、SSSTypeで指定されるサンプラステートの値を、Valueに設定します。
返り値には、Direct3DDeviceからの返り値がそのまま入ります。
function SetRS(RSType:D3DRENDERSTATETYPE; Value:DWORD):HRESULT;
RSTypeで指定されるレンダリングステートの値を、Valueに設定します。
返り値には、Direct3DDeviceからの返り値がそのまま入ります。
function SetTSS(Stage:UINT; TSSType:D3DTEXTURESTAGESTATETYPE; Value:DWORD):HRESULT;
Stageで指定されるテクスチャステージの、TSSTypeで指定されるテクスチャステージステートの値を、Valueに設定します。
返り値には、Direct3DDeviceからの返り値がそのまま入ります。
procedure Memory;
現在をレンダリングステート、テクスチャステージステート、サンプラステートの「復帰ポイント」として設定します
procedure Restore;
レンダリングステート、テクスチャステージステート、サンプラステートを、Memoryで設定した「復帰ポイント」での状態に復元します。