NNSG3dGlb

構造体の定義

#include <nnsys/g3d/glbstate.h>

typedef struct
{
    u32     cmd0;             // G3_MtxMode -> G3_LoadMtx44 -> G3_MtxMode -> G3_LoadMtx43
    u32     mtxmode_proj;     // GX_MTXMODE_PROJECTION
    MtxFx44 projMtx;          // 射影行列
    //
    u32     mtxmode_posvec;   // GX_MTXMODE_POSITION_VECTOR
    MtxFx43 cameraMtx;        // カメラ行列
    
    u32     cmd1;             // G3_LightVector * 4
    u32     lightVec[4];      // ライトベクトル

    u32     cmd2;             // G3_MatColorDiffAmb -> G3_MatColorSpecEmi -> G3_PolygonAttr -> G3_ViewPort
    u32     prmMatColor0;
    u32     prmMatColor1;
    u32     prmPolygonAttr;
    u32     prmViewPort;

    u32     cmd3;             // G3_LightColor * 4
    u32     lightColor[4];    // ライトカラー

    u32     cmd4;             // G3_MultMtx43 -> G3_Scale -> G3_TexImageParam
    MtxFx33 prmBaseRot;
    VecFx32 prmBaseTrans;
    VecFx32 prmBaseScale;
    u32     prmTexImageParam;

    u32 flag;   // NNSG3dGlbFlag
    MtxFx43 invCameraMtx;
    MtxFx43 srtCameraMtx;
    MtxFx43 invSrtCameraMtx;

    MtxFx43 invBaseMtx;

    MtxFx44 invProjMtx;
    MtxFx44 invCameraProjMtx;

    VecFx32 camPos;
    VecFx32 camUp;
    VecFx32 camTarget;
}
NNSG3dGlb;

構造体の解説

NNSG3dGlb構造体は、射影行列・ライトの色や方向・カメラ位置や向き、といった複数のモデルやシーン全体で使用されるデータを管理する構造体です。NNSG3dGlb構造体は、以下のようなデータを保持しています。

NNSG3dGlb構造体のインスタンスは、グローバル変数のNNS_G3dGlbのみであり、使用前にNNS_G3dGlbInit関数を呼び出すことで初期化することができます。構造体の持つデータメンバへのアクセスはNNS_G3dGlb*関数群を通すようにしてください。

一般に、NNS_G3dDraw関数を使用して描画する前にNNS_G3dGlbFlushPNNS_G3dGlbFlushVPNNS_G3dGlbFlushWVP関数のどれかを使用することにより、NNSG3dGlb構造体に設定されたデータをジオメトリエンジンに反映させることができます。デフォルトのマテリアルカラー等は、NNS_G3dMdlUseGlbXXXXX関数をモデルリソースに対して使用した場合、この構造体の設定が使用されるようになります。

なお、ビルボードを含むモデル等、描画中にカメラ行列等の情報が必要となった場合、G3DはNNSG3dGlb構造体に記録されているデータを使用する場合があることに注意してください。

参照

グローバルステート

履歴

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