Hardware acceleration problem

Hello All

I write a CAD CAM program that makes huge display lists of triangles (1 million is a small one). We do not use texturing or anything, just light and color. Using some accelereting cards they actually deccelerating us unless we take the hardware acceleration to none.

Have you any idea?

Thanks

  • Depending on how often you use the generated display lists, it’s probably not worth to have the additional build step and memory consumption at all. Your program needs to hold the data anyway.
  • Vertex arrays or even immediate mode might perform better for geometry which is changing often.
  • Try to split the display lists to smaller chunks.
  • Compare different drivers. Some professional cards offer options for display list handling.

If you could post what cards you are using it would help. I wouldn’t think that turning off hardware acceleration would speed it up. But here are some things to check on. Some cards are better at drawing lines than others, Quadro level cards are well known for drawing lines better than their sister Geforce gaming cards all from Nvidia. But Geforce in my experience has always drawn lines faster than software, as does ATI, Matrox, 3Dlabs, etc.

I HAVE experience major slowdown using additional clipping planes (a user clipping plane on top of the frustrum cull). On some cards this retreated to a software mode in the driver, but kept additional functions which then also had to run in software mode. When selecting software mode in the program, the program we were using immeadiately cut off all non-essential functions to spead it up, implemented some gaming short-cuts, etc., and the software mode was slightly faster in the program because of short-cuts not because of the mode change. But I have never heard of the same code running faster in software render than hardware… I think it would be helpful to know what card(s) you are using.

First, thanks for your time!

Second, I make the display list only once! after reading in the model and triangulating it. This is the CAM module so I do not change the module. I just zoom in and out, change color and matterial and viewports.
Regarding the drivers - I always load the most current, I played with all the different options, but only by disabling the acceleration from the troubleshoot tab did it help…

Thanks for your time too…

Now I am using a simple nVidia vanta but it also happen in oxigen, fire gl etc…

Relic, thanks! you reminded me of one other possibility for this problem.

If you are re-gening the display lists EVERY frame, you can easily spend more time on some cards than software mode. Software mode doesn’t have much implied benefit of display lists, so pretty much runs at immeadiate mode spead wether you use display lists or not. So if you regen your display lists every frame, you may be doing twice as much work on hardware rendering as with software.

Why are you using “light” in a CAD module? The vanta should not have any hardware accelerated Lighting which means that could decelerate you. But the others should be fine, especially the fireGL, so I think something else is going on here.

Mono-color lines? or color/material value per vertex? color-material optimization turned on?

i guess this could be because your display lists does not fit into your videomem so the driver can’t store them there and stores them in the sysmem…

try using Vertexarrays.(especially VAR+fence on gefroces or VAO on radeons) this should speed your apps up…

btw.:
if this object does not fit in your viewfrustrum
(because its a scene-mesh) i strongly recomend to do some frustrun/culling with octrees. If you displaying objects with this amount of polygons and you allways show the entire mesh, your are displaying far too much
polygons… why i am so sure about this ?
it’s easy: on a screen with a resoultion of
1024x768 pixels, you have 786432 pixels at all. so you trying the display more triangles, than your display has pixels!
in this case i strongly recomend to do some meshrecudtion before displaying it. this could save up to 500%(*) of your polygons without any visual changes.

(*)depending on you mesh & screenres of course.

Because I am in a different time zone - I have to leave the office now. I thank you for your answers and will write tommorow more details on the code. I will be very happy if you could try looking into it sometimes cause this problem is very big!

Thanks!