#include <nnsys/g2d/g2d_OamSoftwareSpriteDraw.h>
void NNS_G2dDrawOneOam3DDirectFast
(
const GXOamAttr* pOam,
const NNSG2dImageAttr* pTexImageAttr,
u32 texBaseAddr,
u32 pltBaseAddr
);
void NNS_G2dDrawOneOam3DDirectWithPosFast
(
s16 posX,
s16 posY,
s16 posZ,
const GXOamAttr* pOam,
const NNSG2dImageAttr* pTexImageAttr,
u32 texBaseAddr,
u32 pltBaseAddr
);
void NNS_G2dDrawOneOam3DDirectWithPosAffineFast
(
s16 posX,
s16 posY,
s16 posZ,
const GXOamAttr* pOam,
const NNSG2dImageAttr* pTexImageAttr,
u32 texBaseAddr,
u32 pltBaseAddr,
const MtxFx22* pMtx
);
なし。
単一OBJを3Dグラフィックスエンジンを使用して、内部バッファを使用せずに直接描画します。
NNS_G2dDrawOneOam3DDirectXXXFast()関数は、描画の前後でジオメトリエンジンのカレント行列の内容が保存されません。
カレント行列スタックのPush,Pop処理を行わないので、その分だけ高速に動作します。
特に、カレント行列を描画毎に保存する必要がない場合などに、効率的な処理を行うことが可能となります(コード例1)。
コード例1:
G3_PushMtx();
for( i = 0; i < N; i++ )
{
G3_Identity();// もしくは、G3_LoadMtx43( &mtx ) など
NNS_G2dDrawOneOam3DDirectXXXFast();
}
G3_PopMtx(1);
コード例2:
NNS_G2dDrawOneOam3DDirectXXX
{
G3_PushMtx();
NNS_G2dDrawOneOam3DDirectXXXFast();
G3_PopMtx(1);
}
NNS_G2dDrawOneOam3DDirect
NNS_G2dDrawOneOam3DDirectWithPos
NNS_G2dDrawOneOam3DDirectWithPosAffine
2004/11/10 初版