⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffb_rendertmp.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 2 页
字号:
		__FUNCTION__, start, count, flags);#endif	ffbRenderPrimitive(ctx, GL_TRIANGLE_STRIP);	i = start + 2;	goto something_clipped; something_clipped:	for (; i < count; i++, parity ^= 1) {		ffb_vertex *v0 = &fmesa->verts[ELT(i - 2 + parity)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 1 - parity)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		FFB_COMPUTE_AREA_TRI(v0, v1, v2);		FFB_CULL_TRI(continue;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 3) + 9));		FFB_SET_PRIM_COLOR(v2);		FFB_SET_VERTEX_COLOR(v0);		ffb->z   = FFB_GET_Z(v0);		ffb->ryf = FFB_GET_Y(v0);		ffb->rxf = FFB_GET_X(v0);		FFB_SET_VERTEX_COLOR(v1);		ffb->z   = FFB_GET_Z(v1);		ffb->y   = FFB_GET_Y(v1);		ffb->x   = FFB_GET_X(v1);		FFB_SET_VERTEX_COLOR(v2);		ffb->z   = FFB_GET_Z(v2);		ffb->y   = FFB_GET_Y(v2);		ffb->x   = FFB_GET_X(v2);		i++;		parity ^= 1;		break;	}	for (; i < count; i++, parity ^= 1) {		ffb_vertex *v0 = &fmesa->verts[ELT(i - 2 + parity)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 1 - parity)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		(void) v0; (void) v1;		FFB_COMPUTE_AREA_TRI(v0, v1, v2);		FFB_CULL_TRI(i++; parity^=1; goto something_clipped;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 1) + 3));		FFB_SET_PRIM_COLOR(v2);		FFB_SET_VERTEX_COLOR(v2);		ffb->z   = FFB_GET_Z(v2);		ffb->y   = FFB_GET_Y(v2);		ffb->x   = FFB_GET_X(v2);	}	fmesa->ffbScreen->rp_active = 1;}static void TAG(ffb_vb_tri_fan)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags){	GLint i;	IMPL_LOCAL_VARS;#ifdef FFB_RENDER_TRACE	fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",		__FUNCTION__, start, count, flags);#endif	ffbRenderPrimitive(ctx, GL_TRIANGLE_FAN);	i = start + 2;	goto something_clipped; something_clipped:	for ( ; i < count; i++) {		ffb_vertex *v0 = &fmesa->verts[ELT(start)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 1)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		FFB_COMPUTE_AREA_TRI(v0, v1, v2);		FFB_CULL_TRI(continue;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 3) + 9));		FFB_SET_PRIM_COLOR(v2);		FFB_SET_VERTEX_COLOR(v0);		ffb->z   = FFB_GET_Z(v0);		ffb->ryf = FFB_GET_Y(v0);		ffb->rxf = FFB_GET_X(v0);		FFB_SET_VERTEX_COLOR(v1);		ffb->z   = FFB_GET_Z(v1);		ffb->y   = FFB_GET_Y(v1);		ffb->x   = FFB_GET_X(v1);		FFB_SET_VERTEX_COLOR(v2);		ffb->z   = FFB_GET_Z(v2);		ffb->y   = FFB_GET_Y(v2);		ffb->x   = FFB_GET_X(v2);		i++;		break;	}	for (; i < count; i++) {		ffb_vertex *v0 = &fmesa->verts[ELT(start)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 1)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		(void) v0; (void) v1;		FFB_COMPUTE_AREA_TRI(v0, v1, v2);		FFB_CULL_TRI(i++; goto something_clipped;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 1) + 3));		FFB_SET_PRIM_COLOR(v2);		FFB_SET_VERTEX_COLOR(v2);		ffb->z    = FFB_GET_Z(v2);		ffb->dmyf = FFB_GET_Y(v2);		ffb->dmxf = FFB_GET_X(v2);	}	fmesa->ffbScreen->rp_active = 1;}static void TAG(ffb_vb_poly)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags){	GLint i;	IMPL_LOCAL_VARS;#ifdef FFB_RENDER_TRACE	fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",		__FUNCTION__, start, count, flags);#endif	ffbRenderPrimitive(ctx, GL_POLYGON);	/* XXX Optimize XXX */	for (i = start + 2; i < count; i++) {		ffb_vertex *v0 = &fmesa->verts[ELT(i - 1)];		ffb_vertex *v1 = &fmesa->verts[ELT(i)];		ffb_vertex *v2 = &fmesa->verts[ELT(start)];		FFB_AREA_DECLARE		FFB_COMPUTE_AREA_TRI(v0, v1, v2);		FFB_CULL_TRI(continue;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 3) + 9));		FFB_SET_PRIM_COLOR(v2);		FFB_SET_VERTEX_COLOR(v0);		ffb->z   = FFB_GET_Z(v0);		ffb->ryf = FFB_GET_Y(v0);		ffb->rxf = FFB_GET_X(v0);		FFB_SET_VERTEX_COLOR(v1);		ffb->z   = FFB_GET_Z(v1);		ffb->y   = FFB_GET_Y(v1);		ffb->x   = FFB_GET_X(v1);		FFB_SET_VERTEX_COLOR(v2);		ffb->z   = FFB_GET_Z(v2);		ffb->y   = FFB_GET_Y(v2);		ffb->x   = FFB_GET_X(v2);	}	fmesa->ffbScreen->rp_active = 1;}static void TAG(ffb_vb_quads)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags){	GLint i;	IMPL_LOCAL_VARS;#ifdef FFB_RENDER_TRACE	fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",		__FUNCTION__, start, count, flags);#endif	ffbRenderPrimitive(ctx, GL_QUADS);	for (i = start + 3; i < count; i += 4) {		ffb_vertex *v0 = &fmesa->verts[ELT(i - 3)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 2)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 1)];		ffb_vertex *v3 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		FFB_COMPUTE_AREA_QUAD(v0, v1, v2, v3);		FFB_CULL_QUAD(continue;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 4) + 12));		FFB_SET_PRIM_COLOR(v3);		FFB_SET_VERTEX_COLOR(v0);		ffb->z    = FFB_GET_Z(v0);		ffb->ryf  = FFB_GET_Y(v0);		ffb->rxf  = FFB_GET_X(v0);		FFB_SET_VERTEX_COLOR(v1);		ffb->z    = FFB_GET_Z(v1);		ffb->y    = FFB_GET_Y(v1);		ffb->x    = FFB_GET_X(v1);		FFB_SET_VERTEX_COLOR(v2);		ffb->z    = FFB_GET_Z(v2);		ffb->y    = FFB_GET_Y(v2);		ffb->x    = FFB_GET_X(v2);		FFB_SET_VERTEX_COLOR(v3);		ffb->z    = FFB_GET_Z(v3);		ffb->dmyf = FFB_GET_Y(v3);		ffb->dmxf = FFB_GET_X(v3);	}	fmesa->ffbScreen->rp_active = 1;}static void TAG(ffb_vb_quad_strip)(GLcontext *ctx, GLuint start, GLuint count, GLuint flags){	GLint i;	IMPL_LOCAL_VARS;#ifdef FFB_RENDER_TRACE	fprintf(stderr, "%s: start(%d) count(%d) flags(%x)\n",		__FUNCTION__, start, count, flags);#endif	ffbRenderPrimitive(ctx, GL_QUAD_STRIP);	/* XXX Optimize XXX */	for (i = start + 3; i < count; i += 2) {		ffb_vertex *v0 = &fmesa->verts[ELT(i - 1)];		ffb_vertex *v1 = &fmesa->verts[ELT(i - 3)];		ffb_vertex *v2 = &fmesa->verts[ELT(i - 2)];		ffb_vertex *v3 = &fmesa->verts[ELT(i - 0)];		FFB_AREA_DECLARE		FFB_COMPUTE_AREA_QUAD(v0, v1, v2, v3);		FFB_CULL_QUAD(continue;);		FFBFifo(fmesa, (FFB_PRIM_COLOR_COST +				(FFB_VERTEX_COLOR_COST * 4) + 12));		FFB_SET_PRIM_COLOR(v3);		FFB_DUMP_VERTEX(v0);		FFB_SET_VERTEX_COLOR(v0);		ffb->z    = FFB_GET_Z(v0);		ffb->ryf  = FFB_GET_Y(v0);		ffb->rxf  = FFB_GET_X(v0);		FFB_DUMP_VERTEX(v1);		FFB_SET_VERTEX_COLOR(v1);		ffb->z    = FFB_GET_Z(v1);		ffb->y    = FFB_GET_Y(v1);		ffb->x    = FFB_GET_X(v1);		FFB_DUMP_VERTEX(v2);		FFB_SET_VERTEX_COLOR(v2);		ffb->z    = FFB_GET_Z(v2);		ffb->y    = FFB_GET_Y(v2);		ffb->x    = FFB_GET_X(v2);		FFB_DUMP_VERTEX(v3);		FFB_SET_VERTEX_COLOR(v3);		ffb->z    = FFB_GET_Z(v3);		ffb->dmyf = FFB_GET_Y(v3);		ffb->dmxf = FFB_GET_X(v3);	}	fmesa->ffbScreen->rp_active = 1;}static void (*TAG(render_tab)[GL_POLYGON + 2])(GLcontext *, GLuint, GLuint, GLuint) ={#if !(IND & (FFB_TRI_CULL_BIT))	TAG(ffb_vb_points),	TAG(ffb_vb_lines),	TAG(ffb_vb_line_loop),	TAG(ffb_vb_line_strip),#else	NULL,	NULL,	NULL,	NULL,#endif	TAG(ffb_vb_triangles),	TAG(ffb_vb_tri_strip),	TAG(ffb_vb_tri_fan),	TAG(ffb_vb_quads),	TAG(ffb_vb_quad_strip),	TAG(ffb_vb_poly),	ffb_vb_noop,};#undef IND#undef TAG#undef IMPL_LOCAL_VARS#undef FFB_DECLARE_CACHED_COLOR#undef FFB_COMPUTE_CACHED_COLOR#undef FFB_CACHED_COLOR_SAME#undef FFB_CACHED_COLOR_SET#undef FFB_CACHED_COLOR_UPDATE#undef FFB_SET_PRIM_COLOR#undef FFB_PRIM_COLOR_COST#undef FFB_SET_VERTEX_COLOR#undef FFB_VERTEX_COLOR_COST#undef RESET_STIPPLE#undef FFB_AREA_DECLARE#undef FFB_COMPUTE_AREA_TRI#undef FFB_COMPUTE_AREA_QUAD#undef FFB_CULL_TRI#undef FFB_CULL_QUAD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -