NNS_G3D_SBC_MAT

命令のフォーマット

オフセット(バイト単位) 説明
0(上位3bitが[000]の場合) NNS_G3D_SBC_MAT | NNS_G3D_SBCFLG_000
0(上位3bitが[001]の場合) NNS_G3D_SBC_MAT | NNS_G3D_SBCFLG_001
0(上位3bitが[010]の場合) NNS_G3D_SBC_MAT | NNS_G3D_SBCFLG_010
1 マテリアルID

説明

NNS_G3D_SBC_MAT命令は、マテリアル情報をモデルリソースやアニメリソースから取得し、ジオメトリエンジンに送信するための命令です。この命令は、デフォルトではsbc.cのNNSi_G3dFuncSbc_MAT関数をコールします。関数の内部では以下のような処理が行われています。

  1. NNS_G3dRS構造体のpMatAnmResultメンバにNNSG3dMatAnmResultのポインタをセットする。
  2. タイミングAのコールバックをチェックします。この位置のコールバックは、マテリアルの計算をコールバック関数に代行させたい場合に便利です。なお、コールバック関数内でNNS_G3dRS構造体のNNS_G3D_RSFLAG_SKIPフラグをセットしておくと、次のコールバックまでの処理をスキップします。
  3. マテリアル情報が静止画/アニメーションの場合に応じて、*pMatAnmResultにセットされます。
  4. タイミングBのコールバックをチェックします。この位置のコールバックは、マテリアルの計算結果をコールバック関数に加工させたい場合に便利です。
  5. マテリアル情報がジオメトリエンジンに送信されます。
  6. タイミングCのコールバックをチェックします。この位置のコールバックは、この命令の終了後に何らかの動作をさせたい場合に利用します。


コールバック関数の呼び出しタイミング 用途
NNS_G3D_SBC_CALLBACK_TIMING_A マテリアルの計算をユーザーのプログラムに代行させたい場合。
NNS_G3D_SBC_CALLBACK_TIMING_B マテリアルの計算結果をユーザーのプログラムに加工させたい場合。
NNS_G3D_SBC_CALLBACK_TIMING_C この命令の終了後に何らかの処理を入れたい場合。


オプションフラグ 動作
NNS_G3D_SBCFLG_000 マテリアルの計算結果を格納しているバッファをチェックせず、計算結果もバッファリングしない場合
NNS_G3D_SBCFLG_001 マテリアルの計算結果をバッファリングされている場合はそれを利用。バッファがない場合は計算するが計算結果はバッファリングしない。
NNS_G3D_SBCFLG_010 マテリアルの計算結果をバッファリングされている場合はそれを利用。バッファがない場合は計算して計算結果をバッファリングする。

参照

履歴

2004/10/14 記述の追加
2004/08/02 初版