NNSG3dRenderObj

構造体の定義

#include <nnsys/g3d/kernel.h>

typedef struct NNSG3dRenderObj_
{
    u32 flag; // NNSG3dRenderObjFlag

    NNSG3dResMdl*         resMdl;
    NNSG3dAnmObj*         anmMat;
    NNSG3dFuncAnmBlendMat funcBlendMat;
    NNSG3dAnmObj*         anmJnt;
    NNSG3dFuncAnmBlendJnt funcBlendJnt;
    NNSG3dAnmObj*         anmVis;
    NNSG3dFuncAnmBlendVis funcBlendVis;

    // コールバック用情報
    NNSG3dSbcCallBackFunc cbFunc;              // NULLならばコールバックはない。
    u8                    cbCmd;               // 停止位置をコマンドで指定。NNS_G3D_SBC_*****(res_struct.hで定義)
    u8                    cbTiming;            // NNSG3dSbcCallBackTiming(sbc.hで定義)
    u16                   dummy_;

    // レンダリング開始直前に呼ばれる。一般的にNNS_G3dRSの
    // コールバックベクタを設定するために使われる。
    NNSG3dSbcCallBackFunc cbInitFunc;

    // ユーザーが管理する領域へのポインタ
    // あらかじめポインタを設定しておけばコールバックでの使用が可能.
    void*                 ptrUser;

    u8*                   ptrUserSbc;

    struct NNSG3dJntAnmResult_*   recJntAnm;
    struct NNSG3dMatAnmResult_*   recMatAnm;

    u32 hintMatAnmExist[NNS_G3D_SIZE_MAT_MAX / 32];
    u32 hintJntAnmExist[NNS_G3D_SIZE_JNT_MAX / 32];
    u32 hintVisAnmExist[NNS_G3D_SIZE_JNT_MAX / 32];
}
NNSG3dRenderObj;

構造体の解説

NNSG3dRenderObj構造体は、モデルの描画に際して必要なデータをまとめた構造体です。NNSG3dRenderObj構造体は、以下のようなデータを保持しています。

NNSG3dRenderObj構造体を利用してモデルを描画するためには、以下のような処理が必要となります。

  1. NNS_G3dAllocRenderObj関数を使用して(利用せずにスタックに確保しても可)、構造体の領域を確保します。
  2. NNS_G3dRenderObjInit関数を使用して、構造体を初期化します。
  3. アニメーションさせる場合には、NNS_G3dRenderObjAddAnmObj関数でアニメーションオブジェクトを追加します。
  4. コールバック処理が必要な場合は、NNS_G3dRenderObjSetCallBack関数やNNS_G3dRenderObjSetInitFunc関数でコールバック関数を登録します。
  5. ジョイントやマテリアル計算の結果を再利用する場合には、NNS_G3dRenderObjSetJntAnmBuffer関数や NNS_G3dRenderObjSetMatAnmBuffer関数を使用してバッファをNNSG3dRenderObj構造体に登録します。
  6. NNS_G3dDraw関数を使用して描画します。
  7. 必要なくなったら、NNS_G3dFreeRenderObj関数を使用して、確保した領域を解放します。

なお、NNS_G3dDraw1Mat1Shp関数を使用して描画する場合にはNNSG3dRenderObj構造体を用意する必要はありません。

参照

カーネル

履歴

2007/05/17 構造体の定義を追加
2004/10/12 初版