Original Post
Hi,
I am in the middle of creating a graphics system that''s being used as the core engine for a piece of demo technology for a medium size company. Without being able to say too much about what''s going on, I am attempting to display about 25 meshes whose triangle count totals about 100,000. These meshes are for the most part, visible in their entirety (backfaces aside). At present I''m getting 7.5fps on an Athlon 700, 256Mb ram, GeForce 256 DDR, Win 2k. All triangles are drawn lit and z-buffered, with no texture mapping.
Although I don''t expect order of magnitude improvements, I would like to make it go faster. I''m using OpenGL, and rendering the triangles through a glDrawElements call. The geometry isn''t static, so display lists is a no go. The bottleneck is certainly the rendering, commenting out the glDrawElements calls bumps us up to 28fps, which is reasonable considering some of the CPU intensive stuff we''re doing (although optimisation when we get to it could easily double that).
If I could outline some of my ideas, and get some feedback as to which way to go, this would be handy (especially if any NVidia engineers are reading!).
1. Do backface culling on the CPU. Tried it already, seemed to shift the bottleneck onto the vertex buffer creation. Halved the polygon count though.
2. Break up the vertex arrays into more glDrawElements calls, but with about 100 triangles in each one. At the moment we get up to about 6000 vertices and 9000 triangles with one mesh, and I''m not sure sending all that data down to the card at once is a good idea. NVidia''s site is a bit vague as to what a near-optimal vertex array size is.
3. Persuade the company''s art department to get rid of some triangles, which wouldn''t actually hurt visual quality. However, since we''re contracted to them, I''d rather have a can do attitude. Plus these are people who are used to scenes taking an afternoon to render
4. Put a lot of effort into strip finding. It''s not an ideal way to do it, since there''s quite a lot of work involved maintaining strip lengths, and due to the way some of our modellers work it would be non-trvial to put in at this point.
Anyway, any suggestions would be very gratefully recieved.
Thanks a lot,
Henry