GSVertexTrace::GSVertexTrace(const GSState* state) : m_state(state) { m_primclass = GS_INVALID_CLASS; memset(&m_alpha, 0, sizeof(m_alpha)); #define InitUpdate3(P, IIP, TME, FST, COLOR) \ m_fmm[COLOR][FST][TME][IIP][P] = &GSVertexTrace::FindMinMax<P, IIP, TME, FST, COLOR>; #define InitUpdate2(P, IIP, TME) \ InitUpdate3(P, IIP, TME, 0, 0) \ InitUpdate3(P, IIP, TME, 0, 1) \ InitUpdate3(P, IIP, TME, 1, 0) \ InitUpdate3(P, IIP, TME, 1, 1) \ #define InitUpdate(P) \ InitUpdate2(P, 0, 0) \ InitUpdate2(P, 0, 1) \ InitUpdate2(P, 1, 0) \ InitUpdate2(P, 1, 1) \ InitUpdate(GS_POINT_CLASS); InitUpdate(GS_LINE_CLASS); InitUpdate(GS_TRIANGLE_CLASS); InitUpdate(GS_SPRITE_CLASS); }
GSVertexTrace::GSVertexTrace(const GSState* state) : m_state(state) { #define InitUpdate3(P, IIP, TME, FST, COLOR) \ m_fmm[COLOR][FST][TME][IIP][P] = &GSVertexTrace::FindMinMax<P, IIP, TME, FST, COLOR>; #define InitUpdate2(P, IIP, TME) \ InitUpdate3(P, IIP, TME, 0, 0) \ InitUpdate3(P, IIP, TME, 0, 1) \ InitUpdate3(P, IIP, TME, 1, 0) \ InitUpdate3(P, IIP, TME, 1, 1) \ #define InitUpdate(P) \ InitUpdate2(P, 0, 0) \ InitUpdate2(P, 0, 1) \ InitUpdate2(P, 1, 0) \ InitUpdate2(P, 1, 1) \ InitUpdate(GS_POINT_CLASS); InitUpdate(GS_LINE_CLASS); InitUpdate(GS_TRIANGLE_CLASS); InitUpdate(GS_SPRITE_CLASS); }