NNS_G2dDrawOneOam3DDirect*Fast

構文

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


NNS_G2dDrawOneOam3DDirectXXXは以下のコード例で示すように、 NNS_G2dDrawOneOam3DDirectXXXFast()によって実装されています(コード例2)。

コード例2:

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

参照

NNS_G2dDrawOneOam3DDirect
NNS_G2dDrawOneOam3DDirectWithPos
NNS_G2dDrawOneOam3DDirectWithPosAffine

履歴

2004/11/10 初版