GPU_GEQUAL = 7
}GPU_TESTFUNC;
+typedef enum
+{
+ GPU_SCISSOR_DISABLE = 0, // disable scissor test
+ GPU_SCISSOR_INVERT = 1, // exclude pixels inside the scissor box
+ // 2 is the same as 0
+ GPU_SCISSOR_NORMAL = 3, // exclude pixels outside of the scissor box
+
+} GPU_SCISSORMODE;
+
typedef enum
{
GPU_KEEP = 0, // keep destination value
void GPU_SetViewport(u32* depthBuffer, u32* colorBuffer, u32 x, u32 y, u32 w, u32 h);
+void GPU_SetScissorTest(GPU_SCISSORMODE mode, u32 x, u32 y, u32 w, u32 h);
+
void GPU_DepthRange(float nearVal, float farVal);
void GPU_SetAlphaTest(bool enable, GPU_TESTFUNC function, u8 ref);
void GPU_SetDepthTestAndWriteMask(bool enable, GPU_TESTFUNC function, GPU_WRITEMASK writemask); // GPU_WRITEMASK values can be ORed together
GPUCMD_Add(0x800F0112, param, 0x00000004);
}
+void GPU_SetScissorTest(GPU_SCISSORMODE mode, u32 x, u32 y, u32 w, u32 h)
+{
+ u32 param[3];
+
+ param[0x0] = mode;
+ param[0x1] = (y<<16)|(x&0xFFFF);
+ param[0x2] = ((h-1)<<16)|((w-1)&0xFFFF);
+ GPUCMD_Add(0x800F0065, param, 0x00000003);
+}
+
void GPU_DepthRange(float nearVal, float farVal)
{
GPUCMD_AddSingleParam(0x000F006D, 0x00000001); //?