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

Reply via email to