[brlcad-commits] SF.net SVN: brlcad:[35265] brlcad/trunk/src
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <n_...@us...> - 2009-07-23 17:28:06
|
Revision: 35265 http://brlcad.svn.sourceforge.net/brlcad/?rev=35265&view=rev Author: n_reed Date: 2009-07-23 17:27:56 +0000 (Thu, 23 Jul 2009) Log Message: ----------- turned z-clipping on by default for dm-rtgl Modified Paths: -------------- brlcad/trunk/src/libdm/Makefile.am brlcad/trunk/src/libdm/dm-rtgl.c brlcad/trunk/src/tclscripts/mged/mview.tcl Modified: brlcad/trunk/src/libdm/Makefile.am =================================================================== --- brlcad/trunk/src/libdm/Makefile.am 2009-07-23 17:16:46 UTC (rev 35264) +++ brlcad/trunk/src/libdm/Makefile.am 2009-07-23 17:27:56 UTC (rev 35265) @@ -22,10 +22,10 @@ DM_OGL_LIBS = endif -DM_RTGL_CFLAGS = -DDM_RTGL -DIF_RTGL $(GL_CFLAGS) -DM_RTGL_LIBS = ${LIBGL} -#DM_RTGL_CFLAGS = -#DM_RTGL_LIBS = +#DM_RTGL_CFLAGS = -DDM_RTGL -DIF_RTGL $(GL_CFLAGS) +#DM_RTGL_LIBS = ${LIBGL} +DM_RTGL_CFLAGS = +DM_RTGL_LIBS = if WITH_TK DM_TK_CFLAGS = -DDM_TK -DIF_TK Modified: brlcad/trunk/src/libdm/dm-rtgl.c =================================================================== --- brlcad/trunk/src/libdm/dm-rtgl.c 2009-07-23 17:16:46 UTC (rev 35264) +++ brlcad/trunk/src/libdm/dm-rtgl.c 2009-07-23 17:27:56 UTC (rev 35265) @@ -19,7 +19,7 @@ */ /** @file dm-rtgl.c * - * An Ray Tracing X11 OpenGL Display Manager. + * A Ray Tracing X11 OpenGL Display Manager. * */ @@ -159,7 +159,7 @@ 0, /* no transparency */ 1, /* depth buffer is writable */ 1, /* zbuffer */ - 0, /* no zclipping */ + 1, /* zclipping on by default */ 0, /* clear back buffer after drawing and swap */ 0 /* Tcl interpreter */ }; @@ -170,8 +170,6 @@ /* lighting parameters */ extern float amb_three[]; - - extern float light0_direction[]; extern float light0_position[]; extern float light0_diffuse[]; @@ -194,7 +192,7 @@ struct ptInfoList *currItem; /* remove all points from points list */ -void freePoints(void) { +void freeInfoList(void) { /* list cannot be empty */ if (ptInfo.l.forw != NULL && (struct ptInfoList *)ptInfo.l.forw != &ptInfo) { @@ -204,6 +202,8 @@ BU_LIST_DEQUEUE(&(curr->l)); bu_free(curr, "free ptInfoList curr"); } + + ptInfo.l.forw = BU_LIST_NULL; } } @@ -304,10 +304,10 @@ ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.fogdensity = 1.0; ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.lighting_on = dmp->dm_light; ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.zbuffer_on = dmp->dm_zbuffer; - ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.zclipping_on = dmp->dm_zclip; ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.debug = dmp->dm_debugLevel; ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.bound = dmp->dm_bound; ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.boundFlag = dmp->dm_boundFlag; + ((struct rtgl_vars *)dmp->dm_vars.priv_vars)->mvars.zclipping_on = dmp->dm_zclip; /* this is important so that rtgl_configureWin knows to set the font */ ((struct dm_xvars *)dmp->dm_vars.pub_vars)->fontstruct = NULL; @@ -775,7 +775,7 @@ bu_free(dmp, "rtgl_close: dmp"); /* free points list */ - freePoints(); + freeInfoList(); return TCL_OK; } @@ -1140,6 +1140,8 @@ HIDDEN int rtgl_drawVList(struct dm *dmp, register struct bn_vlist *vp) { + static int call; + int i, j, numTrees, new, newTrees; char *currTree, *trees[RT_MAXARGS]; struct ptInfoList *curr; @@ -1180,7 +1182,7 @@ if (numTrees == 0) { /* drop all display points */ - freePoints(); + freeInfoList(); return TCL_OK; } @@ -1211,6 +1213,7 @@ /* get points for new trees */ if (newTrees) { + call = 1; /* set up application */ RT_APPLICATION_INIT(&app); @@ -1234,16 +1237,19 @@ shootGrid(min, max, Y, Z, X); } - /* draw points */ - glColor3d(0, 1, 0); - glEnableClientState(GL_VERTEX_ARRAY); + /* calculate view vector and its magnitude */ vect_t normal, view; - fastf_t cAngle, viewMag; - int used, index, count = 0; + fastf_t cosAngle, viewMag; aeVect(view, gedp->ged_gvp->gv_aet); viewMag = MAGNITUDE(view); + /* draw points */ + glEnableClientState(GL_VERTEX_ARRAY); + + int used, index, count = 0; + +#if 1 for (BU_LIST_FOR(currItem, ptInfoList, &(ptInfo.l))) { glVertexPointer(3, GL_DOUBLE, 0, &(currItem->points)); @@ -1259,18 +1265,38 @@ normal[Z] = currItem->norms[index + Z]; /* cosine of angle between normal and view vectors */ - cAngle = ( VDOT(view, normal) / (MAGNITUDE(view) * MAGNITUDE(normal)) ); + cosAngle = ( VDOT(view, normal) / (MAGNITUDE(view) * MAGNITUDE(normal)) ); - /* visible elements have angle < 90 degrees */ - if (!(cAngle < 0)) { + /* visible elements have angle < 90 degrees, or cos(angle) > 0 */ + if (cosAngle > 0) { count++; - glColor3d(cAngle, cAngle, cAngle); + glColor3d(cosAngle, cosAngle, cosAngle); glArrayElement(i); } } glEnd(); } +#else + glColor3d(0,1,0); + glBegin(GL_POLYGON); + glVertex3d(0,0,-1); + glVertex3d(1,0,-1); + glVertex3d(1,1,-1); + glVertex3d(0,1,-1); + glEnd(); + glColor3d(1,0,0); + glBegin(GL_POLYGON); + glVertex3d(0,0,1); + glVertex3d(1,0,1); + glVertex3d(1,1,1); + glVertex3d(0,1,1); + glEnd(); +#endif + + /*bu_log("points drawn: %d", count);*/ + call++; + return TCL_OK; } Modified: brlcad/trunk/src/tclscripts/mged/mview.tcl =================================================================== --- brlcad/trunk/src/tclscripts/mged/mview.tcl 2009-07-23 17:16:46 UTC (rev 35264) +++ brlcad/trunk/src/tclscripts/mged/mview.tcl 2009-07-23 17:27:56 UTC (rev 35265) @@ -40,6 +40,10 @@ attach -d $dpy -t 0 -n $w.ul $dtype dm set zclip $mged_default(zclip) + if { $dtype == "rtgl" } { + dm set zclip 1 + dm set zbuffer 1 + } if { $dtype == "ogl" } { dm set zbuffer $mged_default(zbuffer) dm set lighting $mged_default(lighting) @@ -50,6 +54,10 @@ attach -d $dpy -t 0 -n $w.ur $dtype dm set zclip $mged_default(zclip) + if { $dtype == "rtgl" } { + dm set zclip 1 + dm set zbuffer 1 + } if { $dtype == "ogl" } { dm set zbuffer $mged_default(zbuffer) dm set lighting $mged_default(lighting) @@ -60,6 +68,10 @@ attach -d $dpy -t 0 -n $w.ll $dtype dm set zclip $mged_default(zclip) + if { $dtype == "rtgl" } { + dm set zclip 1 + dm set zbuffer 1 + } if { $dtype == "ogl" } { dm set zbuffer $mged_default(zbuffer) dm set lighting $mged_default(lighting) @@ -70,6 +82,10 @@ attach -d $dpy -t 0 -n $w.lr $dtype dm set zclip $mged_default(zclip) + if { $dtype == "rtgl" } { + dm set zclip 1 + dm set zbuffer 1 + } if { $dtype == "ogl" } { dm set zbuffer $mged_default(zbuffer) dm set lighting $mged_default(lighting) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |