PDA

View Full Version : Help, Displaylist and View Frustum Culling



Hongseong Kim
10-14-2005, 09:02 PM
Hi, everyone.
I'm Korean, so I don't write in English very well.
I want to know relation between Display list and View Frustum Culling.
When I tested my program with display list in total object, I got a slow result than not using display list. But when I draw portion of object in monitor, using display list is faster than not using display list. Perhaps, I think the result, if I use display list, OpenGL sort the data of object and excute View frustum culling. So, graphic performace improvement. Is it correct?
My graphic card chip set is nVidia GeForce FX 5700, and perhaps OpenGL version is 1.3 (included in Redhat9)
Please, help me.
Thank you for your help...

dorbie
10-15-2005, 07:40 PM
No this isn't correct.

The display list merely packages all OpenGL display listable commands to the list. When you call the list again it is optimized by the driver both in content and in where the data is stored. Calling the list is exactly the same functionally as reissuing all the commands you placed in the list. Most of the performance gain comes from storing the display listed data on the graphics card memory or DMA mapped system memory in an ideal format. The contents are not culled to the list because that would mean drawing the same display list from a novel viewpoint would be broken.

Display lists are only fast when called after the initial creation, there is an overhead associated with creating a display list that means creating them takes some extra time.

Hongseong Kim
10-17-2005, 06:03 PM
Thank you for your help.
Excuse me for my awkward English.

Your answer is correct. There is an overhead associated with creating a displaylist.
But my program use same geometry data repeatedly. So, if displaylist was made one time when read geometry data from file, it is not made again. Also displaylist creating time is not included testing time.

There is my pseudo-code at bottom. Do you understand my pseudo-code?
I guess that you understand my code. Used polygon is more than millon in my program.

When all geometry are in View Frustum, used displaylist is slow than not used displaylist. But when portion of geometry are in View Frustum, used displaylist is faster than not used display list, and it fast as it has less geometry data. And not used displaylist takes the same time in all case.

So I want to know relation displaylist and View Frustum Culling.
According your answer, Calling the list is exactly the same functionally as reissuing all the commands. If you are correct, how do I analysis my test result? And is there View Frustum Culling openGL Function? If it exist, how do I use it?

Thank you for your help, again. I hope your reply.

'%%' means parenthsis.
1. using Displaylist
fileload%%
%
..................
list = glGenLists %1%
glNewList% drawlinelists , GL_COMPILE %
glBegin%GL_LINE_STRIP%
for%i<geo_EA%
glVertex3f %%
glEnd%%
glEndList%%
%
paintGL%%
%
glEnable %GL_DEPTH_TEST%
glDepthFunc %GL_LEQUAL%

glMatrixMode %GL_PROJECTION%
glLoadIdentity%%
glFrustum%%

glMatrixMode%GL_MODELVIEW%
glLoadIdentity%%
glRotate3f%,,%

glCallList %list%
glFlush%%
%

2. not Displaylist
paintGL%%
%
...........
glBegin%GL_LINE_STRIP%
for % i<geo_EA %
glVertex3f %%
glEnd%%
glFlush%%
%