PDA

View Full Version : Displaylist and VBO test failed on NV6800!



abingcao
09-21-2005, 02:57 PM
I used to have a rendering preformence test using 3 different drawing method: normal opengl draw, displaylist and VBO. It works well on my old ATI 9800Pro, where VBO and displaylist is much fast then normal drawing (when rendering a static scene).

Today I tested on my new Nvdia 6800. The frame rate for 3 different drawing methods are almost the same!

Any thoughts on these? Thank you!

Yong

SirKnight
09-21-2005, 04:35 PM
Maybe your tests aren't stressfull enough. The 6800 is leaps and bounds faster (and just more efficient) than your 9800. Could you provide details about your tests exactly? I've had many demos where using VBO and the like not make a bit of difference b/c I wasn't geometry (vertex) limited.

-SirKnight

cass
09-22-2005, 04:39 AM
Agreed. The you have to be careful that you're not CPU limited on the latest high end graphics hardware. If you're not keeping the graphics pipe fed constantly, it won't matter so much how efficiently it can render the stuff that you're feeding it.

abingcao
09-22-2005, 07:30 AM
Thanks for the replies. Here is some detail about my VBO.

During initialization, I created 2 VBO, one for vertex and one for normal, as follows:

glGenBuffersARB(1, &vertexbufferID);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexbufferID);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_form->numvertice*3*sizeof(float), m_form->mesh, GL_STATIC_DRAW_ARB);

glGenBuffersARB(1, &normalbufferID);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, normalbufferID);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, m_form->numvertice*3*sizeof(float), m_form->vnormal, GL_STATIC_DRAW_ARB);

Then as rendering time, I use vertex array and normal array to draw them:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexbufferID);
glVertexPointer(3,GL_FLOAT,0,0);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, normalbufferID);
glNormalPointer(GL_FLOAT,0,0);
glShadeModel(GL_SMOOTH);
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
glDrawElements(GL_TRIANGLES, 3*m_form->numfaces,GL_UNSIGNED_INT,m_form->findices);

Any comments on it? Thanks.

SirKnight
09-22-2005, 08:34 AM
Ok your code (with a quick glance) looks to be in order. But the key thing here is how many triangles are you rendering per frame?

-SirKnight

abingcao
09-22-2005, 11:16 AM
I have a test about 50,000 triangles. The frame rate is all about 75 on my NV6800.

I remembered that it is about 500 frame/sec using VBO on my old ATI9800Pro.

Yong

al_bob
09-22-2005, 11:25 AM
The frame rate is all about 75 on my NV6800.What's your monitor refresh rate? Sounds like you're waiting for vsync.

abingcao
09-22-2005, 11:31 AM
Right! My screen refreshing rate is 75!

How to get rid of this vsync waiting? Thanks!

Yong

abingcao
09-22-2005, 11:51 AM
Got it! Change some display settings! Thanks a lot!

Yong

SirKnight
09-22-2005, 12:31 PM
Ah vsync...yeah that'll do it. :)

-SirKnight