# NNS_G2dDrawOneOam3DDirect*Fast

## Syntax

      #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
          );

## Return Values

None.

## Description

Directly renders a single OBJ using the 3D Graphics Engine without using the internal buffer. With this function, the content of the current matrix of the geometry engine is not saved before and after rendering. Because the push and pop processes of the current matrix stack are not performed, the speed of the operation is increased correspondingly. In particular, if it is not necessary to save the current matrix with each render, 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);

As indicated in Code Example 2, `NNS_G2dDrawOneOam3DDirectXXX` is implemented via `NNS_G2dDrawOneOam3DDirectXXXFast`.

    Code Example 2:

    NNS_G2dDrawOneOam3DDirectXXX
    {
        G3_PushMtx();
            NNS_G2dDrawOneOam3DDirectXXXFast();
        G3_PopMtx(1);
    }

## See Also

`NNS_G2dDrawOneOam3DDirect`
`NNS_G2dDrawOneOam3DDirectWithPos`
`NNS_G2dDrawOneOam3DDirectWithPosAffine`

## Revision History

2004/11/10 Initial version.

CONFIDENTIAL