Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.milw.wisc.edu!uxc!iuvax!watmath!watcgl!jdchrist From: jdchrist@watcgl.waterloo.edu (Dan Christensen) Newsgroups: comp.sys.sgi Subject: Re: questions about drawing polygons Keywords: polygons Message-ID: <9803@watcgl.waterloo.edu> Date: 19 May 89 01:58:19 GMT References: <9753@watcgl.waterloo.edu> <33129@sgi.SGI.COM> Reply-To: jdchrist@watcgl.waterloo.edu (Dan Christensen) Distribution: comp Organization: Computer Graphics Lab, University of Waterloo Lines: 70 [stuff omitted throughout] In article <33129@sgi.SGI.COM> thant@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@sgi.com "there are 336 dimples on the standard golf ball" Thanks for the help. ---- Dan Christensen, Computer Graphics Lab, jdchrist@watcgl.uwaterloo.ca University of Waterloo, Waterloo, Ont. jdchrist@watcgl.waterloo.edu