NNSG2dOamExEntryFunctions

構造体定義

typedef struct NNSG2dOamExEntryFunctions
{
    NNSG2dGetOamCpacityFuncPtr        getOamCapacity;
    NNSG2dGetOamCpacityFuncPtr        getAffineCapacity;
    NNSG2dEntryNewOamFuncPtr          entryNewOam;
    NNSG2dEntryNewOamAffineFuncPtr    entryNewAffine;
    
}NNSG2dOamExEntryFunctions;

typedef u16     (*NNSG2dGetOamCpacityFuncPtr)(); 
typedef u16     (*NNSG2dGetOamAffineCpacityFuncPtr)(); 
typedef BOOL    (*NNSG2dEntryNewOamFuncPtr)( const GXOamAttr* pOam, u16 index ); 
typedef u16     (*NNSG2dEntryNewOamAffineFuncPtr)( const MtxFx22* mtx, u16 index ); 

NNSG2dOamExEntryFunctions.getOamCapacity

拡張OAMマネージャが利用可能な、OAMアトリビュートの個数を取得する関数へのポインタです。

本関数の返り値である、OAMアトリビュートの個数は、実際にハードウェアOAMにロード可能なOAMアトリビュートの個数を表します。
拡張OAMマネージャの初期化時にパラメータとして与える、OAMチャンクの個数(numPooledOam)とは異なる点にご注意ください。

登録チャンク数 > getOamCapacity()の返り値 のときに、拡張OAMマネージャは 登録されたOBJを複数フレームにわたって時分割表示します。

NNSG2dOamExEntryFunctions.getAffineCapacity

拡張OAMマネージャが利用可能な、OAMアフィンパラメータの個数を取得する関数へのポインタです。
拡張OAMマネージャがアフィンパラメータを管理しない場合には、NULL に設定しても問題ありません。


登録アフィンパラメータ数 > getAffineCapacity()の返り値 のときに、拡張OAMマネージャは
登録されたアフィンパラメータを複数フレームにわたって時分割でロードし、
アフィンパラメータを使用しているOBJを表示します。

NNSG2dOamExEntryFunctions.entryNewOam

OAMアトリビュートを登録する関数へのポインタです。
OAMアトリビュートと、OAMアトリビュートの番号を引数にとります。
OAMアトリビュートの番号indexは、entryNewOamが呼び出された回数と同義です。
なお、G2dが提供するOAMマネージャをentryNewOamの実装として利用する場合には、indexパラメータは使用されません。

実装例:OAMマネージャを使用する場合

static u16 OamMgrExCBEntryOamAffine_( const MtxFx22* pMtx, u16 index )
{
#pragma unused( index )
    return NNS_G2dEntryOamManagerAffine( &myOamMgr_, pMtx );
}

実装例:OAMマネージャを使用しない場合

static BOOL CallBackEntryNewOam(const GXOamAttr* pOam, u16 index)
{
    const u32 szByte = sizeof( GXOamAttr );

    DC_FlushRange( (void*)pOam, szByte );
    GX_LoadOAM( pOam, index * szByte, szByte );

    return TRUE;
}

NNSG2dOamExEntryFunctions.entryNewAffine

OAMアフィンパラメータを登録する関数へのポインタです。
アフィンパラメータを格納する行列と、アフィンパラメータの番号を引数にとります。
拡張OAMマネージャがアフィンパラメータを管理しない場合には、NULL に設定しても問題ありません。
entryNewOamの場合と同様に、アフィンパラメータの番号indexは、entryNewAffineが呼び出された回数と同義です。

実装例:OAMマネージャを使用する場合

static u16 OamMgrExCBEntryOamAffine_( const MtxFx22* pMtx, u16 index )
{
#pragma unused( index )
    return NNS_G2dEntryOamManagerAffine( &myOamMgr_, pMtx );
}

参照

NNS_G2dSetOamManExEntryFunctions
NNS_G2dGetOamManExInstance

履歴

2005/06/06 初版