One more thing, the command line is configured as: --fdm=ufo --disable-clouds --disable-panel --visibility-miles=50
On Tuesday, July 9, 2002, at 10:00 PM, Jonathan Polley wrote: > OS = Windows ME > CPU = Athlon 1.2 GHz > GFX = GeForce 2Ti > Default location went from 67 FPS to 74 FPS = 10% > Default orientation > > I also did some testing around both Seattle and Denver, mainly for the > complex terrain, and saw the following: > > KSEA went from 18 FPS to 27 FPS = 50% improvement > KDEN went from 27 FPS to 35 FPS = 30% improvement > > Although I have a sample size of only three, I was surprised to see the > more complex scene with such a significantly greater improvement. > > Jonathan Polley > > On Tuesday, July 9, 2002, at 08:37 PM, Norman Vine wrote: > >> Hi All >> >> I got a considerable boost in the frame rate from the following >> patch to PLib. < ~25% at default startup location > >> >> I am trying to determine if this also true for 'most' systems >> before advocating it's inclusion into PLib >> >> If you do test this please report back with your results >> and system type < OS, CPU, GFX card > >> >> Thanks >> >> Norman >> >> -----Original Message----- >> From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED]] On Behalf Of Darrell >> Walisser >> Sent: Sunday, June 30, 2002 10:27 PM >> To: [EMAIL PROTECTED] >> Subject: [Plib-devel] ssg vertex tables tuning >> >> >> Hi all, >> While running FlightGear, I noticed a problem with PLIB's vertex >> tables. The implementation is fine, but performance was hideous on Mac >> OS X (like 5fps), even on a fast G4. I'm really curious if this is also >> a problem on other OS's. >> >> After some examination, it seems the majority of FlightGear's geometry >> is rendered in small triangle fans, of 5-10 vertices each, with the >> occasional big lump of vertices in a detailed area. Why is this a >> problem? Well, it turns out that the setup time for vertex arrays is >> actually slower than glVertex3fv() etc because there are so few vertices >> per table. >> >> So, I coded a solution that only kicks into the vertex array code if the >> number of vertices is beyond a certain threshold, otherwise it uses >> glVerte3fv(). I picked 25 as the lower bound for vertex arrays, but this >> value is probably highly system-dependent and we might want to make it >> configurable either at build-time or run-time. >> >> Here's the code (for ssgVtxTable.cxx). Having different versions of the >> inner loop is probably overkill, but you get the idea: >> >> void ssgVtxTable::draw_geometry () >> { >> const int LOWER_BOUND = 25; >> >> int num_vertices = getNumVertices () ; >> int num_colours = getNumColours () ; >> int num_normals = getNumNormals () ; >> int num_texcoords = getNumTexCoords () ; >> >> if ( num_colours == 0 ) glColor4f ( 1.0f, 1.0f, 1.0f, 1.0f ) ; >> if ( num_colours == 1 ) glColor4fv ( colours -> get(0) ) ; >> if ( num_normals == 1 ) glNormal3fv ( normals -> get(0) ) ; >> >> #define LOOP(c,n,t) do { \ >> glBegin(gltype); \ >> for ( int i = 0; i < num_vertices; i++) \ >> { \ >> if(c) glColor3fv(colors[i]); \ >> if(n) glNormal3fv(normals[i]); \ >> if(t) glTexCoord2fv(texcoords[i]); \ >> glVertex3fv(vertices[i]); \ >> } \ >> glEnd(); \ >> } while(0) >> >> // write out the branches >> // to keep branches out of the inner loop >> if (num_vertices < LOWER_BOUND) { >> >> float *tmp; >> tmp = colours->get(0); sgVec4 *colors = (sgVec4*) tmp; >> tmp = normals->get(0); sgVec3 *normals = (sgVec3*) tmp; >> tmp = texcoords->get(0); sgVec2 *texcoords = (sgVec2*) tmp; >> tmp = vertices->get(0); sgVec3 *vertices = (sgVec3*) tmp; >> >> if ( num_colours > 1 ) { >> if ( num_normals > 1 ) { >> if ( num_texcoords > 1 ) >> LOOP(1,1,1); >> else >> LOOP(1,1,0); >> } >> else if ( num_texcoords > 1 ) { >> LOOP(1,0,1); >> } >> else { >> LOOP(1,0,0); >> } >> } >> else if ( num_normals > 1 ) { >> if ( num_texcoords > 1 ) { >> LOOP(0,1,1); >> } >> else { >> LOOP(0,1,0); >> } >> } >> else if ( num_texcoords > 1 ) { >> LOOP(0,0,1); >> } >> else { >> LOOP(0,0,0); >> } >> >> } >> else { >> >> glPushClientAttrib ( GL_CLIENT_VERTEX_ARRAY_BIT ) ; >> >> if ( num_colours > 1 ) >> { >> glEnableClientState ( GL_COLOR_ARRAY ) ; >> glColorPointer ( 4, GL_FLOAT, 0, colours->get(0) ) ; >> } >> >> if ( num_normals > 1 ) >> { >> glEnableClientState ( GL_NORMAL_ARRAY ) ; >> glNormalPointer ( GL_FLOAT, 0, normals->get(0) ) ; >> } >> >> if ( num_texcoords > 1 ) >> { >> glEnableClientState ( GL_TEXTURE_COORD_ARRAY ) ; >> glTexCoordPointer ( 2, GL_FLOAT, 0, texcoords->get(0) ) ; >> } >> >> glEnableClientState ( GL_VERTEX_ARRAY ) ; >> glVertexPointer ( 3, GL_FLOAT, 0, vertices->get(0) ) ; >> >> glDrawArrays ( gltype, 0, num_vertices ) ; >> >> glPopClientAttrib () ; >> } >> } >> >> >> >> ------------------------------------------------------- >> This sf.net email is sponsored by:ThinkGeek >> Welcome to geek heaven. >> http://thinkgeek.com/sf >> _______________________________________________ >> plib-devel mailing list >> [EMAIL PROTECTED] >> https://lists.sourceforge.net/lists/listinfo/plib-devel >> >> >> _______________________________________________ >> Flightgear-devel mailing list >> [EMAIL PROTECTED] >> http://mail.flightgear.org/mailman/listinfo/flightgear-devel > > > _______________________________________________ > Flightgear-devel mailing list > [EMAIL PROTECTED] > http://mail.flightgear.org/mailman/listinfo/flightgear-devel _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel
