#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_G3dGlbFlushP・NNS_G3dGlbFlushVP・NNS_G3dGlbFlushWVP関数のどれかを使用することにより、NNSG3dGlb構造体に設定されたデータをジオメトリエンジンに反映させることができます。デフォルトのマテリアルカラー等は、NNS_G3dMdlUseGlbXXXXX関数をモデルリソースに対して使用した場合、この構造体の設定が使用されるようになります。
なお、ビルボードを含むモデル等、描画中にカメラ行列等の情報が必要となった場合、G3DはNNSG3dGlb構造体に記録されているデータを使用する場合があることに注意してください。
2007/05/17 構造体の定義を追加
2004/10/12 初版