PDA

View Full Version : Aren't display lists supposed to move "stuff" into video memory?



surgptr
04-28-2003, 12:21 PM
I've written some terrain code which contains 130000 triangles and it only renders about 20 frames per second with no lighting, no textures and no normals.

I changed my code to use OpenGL display lists and only saw an improvement of 2 FPS.

Surely I should see a bigger improvement considering the fact that the triangle data should now be in video memory and not being constantly passed across the AGP bus?
If I move the triangles out of view my frame rates go over 200/sec so it's not code overhead slowing it down. Anyway my rendering loop just contains glCallLists.

Ok maybe my problem is that I'm using a TNT2 which is rather old but should theoretically put out 69 FPS with 130000 triangles in the scene or were the manufacturers smoking dope when they said 9 million triangles/sec?

If I throw 130000 triangles at a GeForce 3 Ti 500 would it run a lot faster or is their 31 million triangles/sec figure also a sniff of glue?

Paul

shinpaughp
04-28-2003, 02:58 PM
Try vertex arrays. With triangle strips or quad strips. With or without elements. Elements may be faster depending on the hardware/driver implementation (reuse of vertices).

And, typically I notice a good decrease (15% - 25%) in CPU processing usage when I use display lists but little to no improvement in GPU processing ( 0 - 2 fps). Still good to use, especially if you are CPU limited.

[This message has been edited by shinpaughp (edited 04-28-2003).]

JanHH
04-28-2003, 03:22 PM
I'm quite surprised by theses postings as i always thought that display lists are MUCH faster than drawing with separate opengl calls.. at least, all the function call overhead is removed, and no data has to be sent to video memory, so i guess that it should be really faster. am i wrong?? my own experience is that display lists are in fact much faster as long as you do not have too many of them.

Jan

zeckensack
04-28-2003, 03:27 PM
As the TNT2 doesn't have transform hardware it's no use to store (untransformed) geometry data to the card. There's little to be gained by using display lists on this class of hardware.

The benefits on cards that do have transform hardware are much more obvious.

shinpaughp
04-28-2003, 04:08 PM
I have a GF2 MX, and I only get improvement in CPU usage. Do you know which cards do have the hardware?

surgptr
04-29-2003, 03:31 AM
I had a furthur look into the matter and saw that my app is killing the CPU and even when I drop the triangle count to 16384 it still sits at 100% CPU utilization.
My app is definately using hardware rendering so it must just be the fact that the TNT2 can't do T&L on the card.

Would I be right in assuming that this situation will change if I upgrade to a T&L capable card?
Then the display lists will stay in video memory and all transform and lighting calculations will be performed by the GPU which will take the load off the CPU and AGP bus, correct?

Thanks
Paul

titan
04-29-2003, 06:11 AM
Originally posted by surgptr:
Would I be right in assuming that this situation will change if I upgrade to a T&L capable card?
Then the display lists will stay in video memory and all transform and lighting calculations will be performed by the GPU which will take the load off the CPU and AGP bus, correct?

Maybe. The driver is free to leave your display lists on the video card, but then again using display lists are free to give you change at all. http://www.opengl.org/discussion_boards/ubb/smile.gif Its all up to the driver. If you get a nice new GeForceFX 5200 you'll probably see a good speed boost from using display lists though.

Have you compared your app's polygon throughput with this: http://www.fl-tw.com/opengl/GeomBench/

If you're looking to increase your thoughput I assume you're tristripping and using vertex arrays?

surgptr
04-29-2003, 09:48 AM
Originally posted by titan:
Have you compared your app's polygon throughput with this: http://www.fl-tw.com/opengl/GeomBench/

Nope, but I would if there was a Linux port of it. Maybe I'll port it when I have some time ...


If you're looking to increase your thoughput I assume you're tristripping and using vertex arrays?

I'm using triangle strips (if that's the same as "tristripping") but I haven't switched to vertex arrays yet. I'm still trying to find a good tutorial on vertex arrays.
Even if I do use vertex arrays it's only going to half the number of vertices pumped down the rendering pipeline and at the moment it can barely handle a quarter of the vertices.

Paul