#include <nnsys/g2d/g2d_OamSoftwareSpriteDraw.h>
void NNS_G2dSetOamSoftEmuUVFlipCorrectFunc( NNS_G2dOamSoftEmuUVFlipCorrectFunc pFunc );
pFunc |
[IN] UV value-correction function pointer used in OAM software sprite emulation |
None.
Sets the UV value-correction function pointer used in OAM software sprite emulation. To invalidate this function pointer, use the NNS_G2dResetOamSoftEmuUVFlipCorrectFunc
function.
In its arguments, the callback calls the pointer to the software 4-corner UV values and the horizontal and vertical flip-state flags. This function was prepared as a workaround of the specifications that require the texture sampling position to shift out of synch by 1 texel when the software sprite flip process is performed.
A typical implementation is shown below.
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;
}
}
The correction function that can be set with this function does not support sampling location correction for affine-transformed sprites.
This is based on the assessment that it is more realistic to use resource-based responses for sampling location correction of affine-transformed sprites when factors such as processing load are considered. (Processes done with the material are countermeasures, such as placing transparent color on the pixels around the cell so that the result of the sample location shift will not be highly visible.)
NNS_G2dResetOamSoftEmuUVFlipCorrectFunc
2004/11/10 Added sample code.
2004/07/20 Initial version.
CONFIDENTIAL