questions about drawing polygons

Dan Christensen jdchrist at watcgl.waterloo.edu
Fri May 19 11:58:19 AEST 1989


[stuff omitted throughout]

In article <33129 at sgi.SGI.COM> thant at horus.SGI.COM (Thant Tessman) writes:
>
>Also,
>since on the GTX the graphics are CPU limited, indexing into data will be 
>slower than running a pointer through the data.  Indexing requires a multiply
>and an add.  Incrementing a pointer is just an add.

On page 2-32 of the Iris-4D Series Compiler Guide it is described ways
of making your code faster when being optimized and say "Using 
subscripts instead of pointers".  It mentions that pointers are
used in the generated code anyways but that subscripts help because
the optimizer can figure things out better.  I don't know if this
is true when you are just doing the default optimization, but it
is when you ask for extra optimization.

>> 2) I am trying to draw a large mesh of shaded triangles.  The GT
>>    Library has routines for drawing triangular meshes.  These
>>    routines look like they would speed up drawing significantly because
>>    only one third of the lighting calculations need to be done and one
>              ^^^^^ 
>One half.  In a single strip, each point is sent down once instead of twice
>(not including the end points).  In a connected row of strips each point is 
>sent down twice instead of four times.

I think it is one third, for a long strip.  To draw this using the
mesh commands

         2         4         6         8
        /\--------/\--------/\--------/              
       /  \      /  \      /  \      /                
      /    \    /    \    /    \    /                  
     /      \  /      \  /      \  /                    
    /--------\/--------\/--------\/                       
   1          3         5         7

requires a total of 8 vertices to be specified.  Each one is sent
once.  To draw it using non-mesh routines requires 3*6=18 vertices
to be specified.  The internal ones are specified *three* times
each.  The ratio in this case is 18/8 > 1/2 and goes to 1/3 for
longer strips.  In my case I am drawing long strips so it is
very close to 1/3.

>>    third of the data needs to be put into the pipeline, compared to
>>    drawing each triangle separately.  The problem I found with these
>>    routines is that you have no control over the order in which the
>>    vertices are drawn so that backface removal becomes useless.

>Triangle-meshes can be used with backface removal.  The 'front' of the tmesh 
>is determined by the first triangle and preserved for the rest of the mesh,
>even if swaptmesh is used.

This is what I was looking for!  I must have missed that fact in
the documentation.  I just assumed that each polygon was checked
individually.  Thanks very much!

>There is one bug that shows up when backfaced tmeshes get clipped.  Sometimes
>the individual clipped triangles will randomly disappear or appear, but this 
>is being fixed.

Any idea when?

>thant at sgi.com "there are 336 dimples on the standard golf ball"

Thanks for the help.  

----
Dan Christensen, Computer Graphics Lab,	         jdchrist at watcgl.uwaterloo.ca
University of Waterloo, Waterloo, Ont.	         jdchrist at watcgl.waterloo.edu



More information about the Comp.sys.sgi mailing list