TSXStateRestorer

タスク

 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

 

リファレンス〜メソッド

Create

constructor Create(ADG:TDGCarad);

 TSXStateRestorerオブジェクトを生成します。

 TSXStateRestoreオブジェクトは、TSXScene.StateRestorerプロパティとして、TSXSceneオブジェクトに内蔵されているため、あまりユーザがこのオブジェクトを生成する、という事は無いでしょう。

 ADGには、使用するTDGCaradコンポーネントを指定します。

 

SetSSS

function SetSSS(Stage:UINT; SSSType:D3DSAMPLERSTATETYPE; Value:DWORD):HRESULT;

 Stageで指定されるテクスチャステージの、SSSTypeで指定されるサンプラステートの値を、Valueに設定します。

 返り値には、Direct3DDeviceからの返り値がそのまま入ります。

 

SetRS

function SetRS(RSType:D3DRENDERSTATETYPE; Value:DWORD):HRESULT;

 RSTypeで指定されるレンダリングステートの値を、Valueに設定します。

 返り値には、Direct3DDeviceからの返り値がそのまま入ります。

 

SetTSS

function SetTSS(Stage:UINT; TSSType:D3DTEXTURESTAGESTATETYPE; Value:DWORD):HRESULT;

 Stageで指定されるテクスチャステージの、TSSTypeで指定されるテクスチャステージステートの値を、Valueに設定します。

 返り値には、Direct3DDeviceからの返り値がそのまま入ります。

 

Memory

procedure Memory;

 現在をレンダリングステート、テクスチャステージステート、サンプラステートの「復帰ポイント」として設定します

 

Restore

procedure Restore;

 レンダリングステート、テクスチャステージステート、サンプラステートを、Memoryで設定した「復帰ポイント」での状態に復元します。