NNS_G2dSetOamSoftEmuUVFlipCorrectFunc

構文

#include <nnsys/g2d/g2d_OamSoftwareSpriteDraw.h>

void    NNS_G2dSetOamSoftEmuUVFlipCorrectFunc( NNS_G2dOamSoftEmuUVFlipCorrectFunc pFunc );
                            
                            

引数

pFunc [IN] OAMソフトウェアスプライトエミュレーション で使用される UV値補正関数ポインタ

返り値

なし。

説明

OAMソフトウェアスプライトエミュレーション で使用される UV値補正関数ポインタを設定します。
関数ポインタを無効にするには NNS_G2dResetOamSoftEmuUVFlipCorrectFunc() をご使用ください。

コールバックはソフトウェア4隅のUV値へのポインタと水平垂直方向のフリップ状況フラグを引数に呼び出されます。 本関数は、ソフトウェアスプライトのフリップ処理の際にテクスチャサンプリング位置が1テクセルずれてしまう仕様を、回避することを目的に用意されました。

典型的な実装例を以下に示します。

void UVFlipCorrectFunc_
(
    fx32*   pRetU0,
    fx32*   pRetV0,
    fx32*   pRetU1,
    fx32*   pRetV1,
    BOOL   bFilpH,
    BOOL   bFilpV
)
{
    if( bFilpH )
    {
        *pRetU0 -= FX32_ONE;
        *pRetU1 -= FX32_ONE;
    }

    if( bFilpV )
    {
        *pRetV0 -= FX32_ONE;
        *pRetV1 -= FX32_ONE;
    }
}

本関数で設定可能な補正関数は、アフィン変換されたスプライトのサンプリング位置補正をサポートしていません。
これは、処理負荷等を考慮すると、アフィン変換スプライトのサンプリング位置補正は素材側での対応が現実的との判断に基づいています。
(素材側での対応とは、”サンプル位置がずれた結果、目立った影響が出ないようにセルの周りのピクセルに透明色を配置する”などの対策のことです。)

参照

NNS_G2dResetOamSoftEmuUVFlipCorrectFunc

履歴

2004/11/10 サンプルコードを追加
2004/07/20 初版