📄 t_dd_triemit.h
字号:
#ifndef DO_DEBUG_VERTS#define DO_DEBUG_VERTS 0#endif #ifndef PRINT_VERTEX#define PRINT_VERTEX(x) #endif#if defined(USE_X86_ASM)#define COPY_DWORDS( j, vb, vertsize, v ) \do { \ int __tmp; \ __asm__ __volatile__( "rep ; movsl" \ : "=%c" (j), "=D" (vb), "=S" (__tmp) \ : "0" (vertsize), \ "D" ((long)vb), \ "S" ((long)v) ); \} while (0)#elif defined(HAVE_LE32_VERTS)#define COPY_DWORDS( j, vb, vertsize, v ) \do { \ for ( j = 0 ; j < vertsize ; j++ ) \ vb[j] = CPU_TO_LE32(((GLuint *)v)[j]); \ vb += vertsize; \} while (0)#else#define COPY_DWORDS( j, vb, vertsize, v ) \do { \ for ( j = 0 ; j < vertsize ; j++ ) \ vb[j] = ((GLuint *)v)[j]; \ vb += vertsize; \} while (0)#endif#if HAVE_QUADSstatic __inline void TAG(quad)( CTX_ARG, VERTEX *v0, VERTEX *v1, VERTEX *v2, VERTEX *v3 ){ GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( 4, vertsize); GLuint j; if (DO_DEBUG_VERTS) { fprintf(stderr, "%s\n", __FUNCTION__); PRINT_VERTEX(v0); PRINT_VERTEX(v1); PRINT_VERTEX(v2); PRINT_VERTEX(v3); } COPY_DWORDS( j, vb, vertsize, v0 ); COPY_DWORDS( j, vb, vertsize, v1 ); COPY_DWORDS( j, vb, vertsize, v2 ); COPY_DWORDS( j, vb, vertsize, v3 );}#elsestatic __inline void TAG(quad)( CTX_ARG, VERTEX *v0, VERTEX *v1, VERTEX *v2, VERTEX *v3 ){ GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( 6, vertsize); GLuint j; if (DO_DEBUG_VERTS) { fprintf(stderr, "%s\n", __FUNCTION__); PRINT_VERTEX(v0); PRINT_VERTEX(v1); PRINT_VERTEX(v2); PRINT_VERTEX(v3); } COPY_DWORDS( j, vb, vertsize, v0 ); COPY_DWORDS( j, vb, vertsize, v1 ); COPY_DWORDS( j, vb, vertsize, v3 ); COPY_DWORDS( j, vb, vertsize, v1 ); COPY_DWORDS( j, vb, vertsize, v2 ); COPY_DWORDS( j, vb, vertsize, v3 );}#endifstatic __inline void TAG(triangle)( CTX_ARG, VERTEX *v0, VERTEX *v1, VERTEX *v2 ){ GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( 3, vertsize); GLuint j; if (DO_DEBUG_VERTS) { fprintf(stderr, "%s\n", __FUNCTION__); PRINT_VERTEX(v0); PRINT_VERTEX(v1); PRINT_VERTEX(v2); } COPY_DWORDS( j, vb, vertsize, v0 ); COPY_DWORDS( j, vb, vertsize, v1 ); COPY_DWORDS( j, vb, vertsize, v2 );}#if HAVE_LINESstatic __inline void TAG(line)( CTX_ARG, VERTEX *v0, VERTEX *v1 ){ GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( 2, vertsize); GLuint j; COPY_DWORDS( j, vb, vertsize, v0 ); COPY_DWORDS( j, vb, vertsize, v1 );}#endif#if HAVE_POINTSstatic __inline void TAG(point)( CTX_ARG, VERTEX *v0 ){ GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( 1, vertsize); int j; COPY_DWORDS( j, vb, vertsize, v0 );}#endifstatic void TAG(fast_clipped_poly)( GLcontext *ctx, const GLuint *elts, GLuint n ){ LOCAL_VARS GLuint vertsize = GET_VERTEX_DWORDS(); GLuint *vb = (GLuint *)ALLOC_VERTS( (n-2) * 3, vertsize ); const GLuint *start = (const GLuint *)VERT(elts[0]); GLuint i,j; if (DO_DEBUG_VERTS) { fprintf(stderr, "%s\n", __FUNCTION__); PRINT_VERTEX(VERT(elts[0])); PRINT_VERTEX(VERT(elts[1])); } for (i = 2 ; i < n ; i++) { if (DO_DEBUG_VERTS) { PRINT_VERTEX(VERT(elts[i])); } COPY_DWORDS( j, vb, vertsize, VERT(elts[i-1]) ); COPY_DWORDS( j, vb, vertsize, VERT(elts[i]) ); COPY_DWORDS( j, vb, vertsize, start ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -