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

📄 backend.cc

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 CC
📖 第 1 页 / 共 2 页
字号:
}//opt for a line with the same v.voidBackend::tmeshvertNOGE_BV(TrimVertex *t){#ifdef USE_OPTTT	surfaceEvaluator.inDoEvalCoord2NOGE_BV( t->param[0], t->param[1], t->cache_point, t->cache_normal);    #endif}voidBackend::preEvaluateBU(REAL u){	surfaceEvaluator.inPreEvaluateBU_intfac(u);}void Backend::preEvaluateBV(REAL v){	surfaceEvaluator.inPreEvaluateBV_intfac(v);}/*------------------------------------------------------------------------- * tmeshvert - evaluate a point on a triangle mesh *------------------------------------------------------------------------- */voidBackend::tmeshvert( TrimVertex *t ){#ifndef NOWIREFRAME    const long nuid = t->nuid;#endif    const REAL u = t->param[0];    const REAL v = t->param[1];#ifndef NOWIREFRAME    npts++;    if( wireframetris ) {	if( npts >= 3 ) {	    surfaceEvaluator.bgnclosedline();	    if( mesh[0][2] == 0 )		surfaceEvaluator.evalcoord2f( mesh[0][3], mesh[0][0], mesh[0][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] );	    if( mesh[1][2] == 0 )		surfaceEvaluator.evalcoord2f( mesh[1][3], mesh[1][0], mesh[1][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] );	    surfaceEvaluator.evalcoord2f( nuid, u, v );	    surfaceEvaluator.endclosedline();	}        mesh[meshindex][0] = u;        mesh[meshindex][1] = v;	mesh[meshindex][2] = 0;	mesh[meshindex][3] = nuid;        meshindex = (meshindex+1) % 2;    } else {	surfaceEvaluator.evalcoord2f( nuid, u, v );    }#else                    surfaceEvaluator.evalcoord2f( 0, u, v );//for uninitial memory read          surfaceEvaluator.evalcoord2f( nuid, u, v );#endif}//the same as tmeshvert(trimvertex), for efficiency purposevoidBackend::tmeshvert( REAL u, REAL v ){#ifndef NOWIREFRAME    const long nuid = 0;        npts++;    if( wireframetris ) {	if( npts >= 3 ) {	    surfaceEvaluator.bgnclosedline();	    if( mesh[0][2] == 0 )		surfaceEvaluator.evalcoord2f( mesh[0][3], mesh[0][0], mesh[0][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] );	    if( mesh[1][2] == 0 )		surfaceEvaluator.evalcoord2f( mesh[1][3], mesh[1][0], mesh[1][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] );	    surfaceEvaluator.evalcoord2f( nuid, u, v );	    surfaceEvaluator.endclosedline();	}        mesh[meshindex][0] = u;        mesh[meshindex][1] = v;	mesh[meshindex][2] = 0;	mesh[meshindex][3] = nuid;        meshindex = (meshindex+1) % 2;    } else {	surfaceEvaluator.evalcoord2f( nuid, u, v );    }#else                    surfaceEvaluator.evalcoord2f( 0, u, v );#endif}/*------------------------------------------------------------------------- * tmeshvert - evaluate a grid point of a triangle mesh *------------------------------------------------------------------------- */voidBackend::tmeshvert( GridVertex *g ){    const long u = g->gparam[0];    const long v = g->gparam[1];#ifndef NOWIREFRAME    npts++;    if( wireframetris ) {	if( npts >= 3 ) {	    surfaceEvaluator.bgnclosedline();	    if( mesh[0][2] == 0 )		surfaceEvaluator.evalcoord2f( (long) mesh[0][3], mesh[0][0], mesh[0][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[0][0], (long) mesh[0][1] );	    if( mesh[1][2] == 0 )		surfaceEvaluator.evalcoord2f( (long) mesh[1][3], mesh[1][0], mesh[1][1] );	    else		surfaceEvaluator.evalpoint2i( (long) mesh[1][0], (long) mesh[1][1] );	    surfaceEvaluator.evalpoint2i( u, v );	    surfaceEvaluator.endclosedline();	}        mesh[meshindex][0] = u;        mesh[meshindex][1] = v;	mesh[meshindex][2] = 1;        meshindex = (meshindex+1) % 2;    } else {        surfaceEvaluator.evalpoint2i( u, v );    }#else    surfaceEvaluator.evalpoint2i( u, v );#endif}/*------------------------------------------------------------------------- * swaptmesh - perform a swap of the triangle mesh pointers *------------------------------------------------------------------------- */voidBackend::swaptmesh( void ){#ifndef NOWIREFRAME    if( wireframetris ) {        meshindex = 1 - meshindex;    } else {	surfaceEvaluator.swaptmesh();    }#else    surfaceEvaluator.swaptmesh();#endif}/*------------------------------------------------------------------------- * endtmesh - postamble to triangle mesh *------------------------------------------------------------------------- */voidBackend::endtmesh( void ){#ifndef NOWIREFRAME    if( ! wireframetris )        surfaceEvaluator.endtmesh();#else    surfaceEvaluator.endtmesh();/*    surfaceEvaluator.polymode( N_MESHFILL );*/#endif}/*------------------------------------------------------------------------- * bgnoutline - preamble to outlined rendering *------------------------------------------------------------------------- */voidBackend::bgnoutline( void ){    surfaceEvaluator.bgnline();}/*------------------------------------------------------------------------- * linevert - evaluate a point on an outlined contour *------------------------------------------------------------------------- */voidBackend::linevert( TrimVertex *t ){    surfaceEvaluator.evalcoord2f( t->nuid, t->param[0], t->param[1] );}/*------------------------------------------------------------------------- * linevert - evaluate a grid point of an outlined contour *------------------------------------------------------------------------- */voidBackend::linevert( GridVertex *g ){    surfaceEvaluator.evalpoint2i( g->gparam[0], g->gparam[1] );}/*------------------------------------------------------------------------- * endoutline - postamble to outlined rendering *------------------------------------------------------------------------- */voidBackend::endoutline( void ){    surfaceEvaluator.endline();}/*------------------------------------------------------------------------- * triangle - output a triangle  *------------------------------------------------------------------------- */voidBackend::triangle( TrimVertex *a, TrimVertex *b, TrimVertex *c ){/*    bgntmesh( "spittriangle" );*/    bgntfan();    tmeshvert( a );    tmeshvert( b );    tmeshvert( c );    endtfan();/*    endtmesh();*/}void Backend::bgncurv( void ){    curveEvaluator.bgnmap1f( 0 );}voidBackend::segment( REAL ulo, REAL uhi ){    curveEvaluator.domain1f( ulo, uhi );} void Backend::curvpts(     long type,		 	/* geometry, color, texture, normal */    REAL *pts, 			/* control points */    long stride, 		/* distance to next point */    int order,			/* parametric order */    REAL ulo,			/* lower parametric bound */    REAL uhi )			/* upper parametric bound */{    curveEvaluator.map1f( type, ulo, uhi, stride, order, pts );    curveEvaluator.enable( type );}void Backend::curvgrid( REAL u0, REAL u1, long nu ){    curveEvaluator.mapgrid1f( nu, u0, u1 );}void Backend::curvmesh( long from, long n ){    curveEvaluator.mapmesh1f( N_MESHFILL, from, from+n );}void Backend::curvpt(REAL u){    curveEvaluator.evalcoord1f( 0, u );}void Backend::bgnline( void )		{    curveEvaluator.bgnline();}void Backend::endline( void ){    curveEvaluator.endline();}void Backend::endcurv( void ){    curveEvaluator.endmap1f();}

⌨️ 快捷键说明

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