#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
);
None.
Directly renders a simple OBJ using the 3D Graphics Engine without using the internal buffer. The contents of the current matrix of the geometry engine are not saved before and after rendering with the NNS_G2dDrawOneOam3DDirectXXXFast() function. Since the Push and Pop processes of the current matrix stack are not performed, only that part will operate at a high speed. In particular, if it is not necessary to save each time the current matrix is rendered, more efficient processing becomes possible (Code Example 1).
Code Example 1:
G3_PushMtx();
for( i = 0; i < N; i++ )
{
G3_Identity();// Or G3_LoadMtx43( &mtx ), etc.
NNS_G2dDrawOneOam3DDirectXXXFast();
}
G3_PopMtx(1);
NNS_G2dDrawOneOam3DDirectXXX is implemented via NNS_G2dDrawOneOam3DDirectXXXFast() (Code Example 2).
Code Example 2:
NNS_G2dDrawOneOam3DDirectXXX
{
G3_PushMtx();
NNS_G2dDrawOneOam3DDirectXXXFast();
G3_PopMtx(1);
}
NNS_G2dDrawOneOam3DDirect, NNS_G2dDrawOneOam3DDirectWithPos, NNS_G2dDrawOneOam3DDirectWithPosAffine
11/10/2004 Initial version.
CONFIDENTIAL