Jump to content
  • Advertisement
Sign in to follow this  
jsg007

OpenGL VBOs not giving any performance

This topic is 4020 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey everyone... It seems that VBOs are not giving any performance on my pc. It was not woking in my application, so I downloaded the VBO demo from here which has a VBO and a regular vertex array version, but both of them run at the same speed. Has anyone got any idea why isn't VBO faster? My specs: GeForce 6600 AMD64 3000+ 512MB RAM Windows XP SP 2 I tried the same demo on my brother's Radeon X700 and the VBO version ran about 50% faster.

Share this post


Link to post
Share on other sites
Advertisement
Performance relative to what? I take it you mean glBegin/glEnd.

VBOs are best used for large amounts of verticies. With few verticies you are unlikely to get much of a performance boost and I think it may even be possible to get a performance loss.

Share this post


Link to post
Share on other sites
Quote:
Original post by TGA
Performance relative to what? I take it you mean glBegin/glEnd.

VBOs are best used for large amounts of verticies. With few verticies you are unlikely to get much of a performance boost and I think it may even be possible to get a performance loss.


I mean performance relative with regular Vertex Arrays, and I'm rendering 250.000 triangle to test it...

But I don't think there is a problem in my code, since none of the VBO demos are giving any performance boost, like on other systems... check out the demo in my first post.

Share this post


Link to post
Share on other sites
Your computer and your brother's no doubt have different OpenGL implementations. You'll have to read up on your card and see whether or not it supports the VBO extension and actually stores the vertex data on-card, or just simulates them with vertex arrays (caching the vertex data in main memory, then streaming it over each pass).

Since you're getting no performance boost (but your brother is), I doubt your card supports the extension (but his does). There's probably an easy way to check it, but I've no idea how </3

Share this post


Link to post
Share on other sites
well... I think a GeForce 6 class video card should have support for VBOs, even if it's not a high end video card right now... the extensenion is obviously present, but the performance is exactly the same as normal vertex arrays, so it might be simulated internally.

It is quite weird...


Is someone else experiencing this on a 6600?

Share this post


Link to post
Share on other sites
I use something such as this:

int CheckExtension(char* extensionName)
{
// get the list of supported extensions
char* extensionList = (char*) glGetString(GL_EXTENSIONS);

if (!extensionName || !extensionList)
return 0;

while (*extensionList)
{
// find the length of the first extension substring
unsigned int firstExtensionLength = strcspn(extensionList, " ");


if (strlen(extensionName) == firstExtensionLength &&
strncmp(extensionName, extensionList, firstExtensionLength) == 0)
{
return 1;
}

// move to the next substring
extensionList += firstExtensionLength + 1;
}

return 0;
} // end CheckExtension()


Then call with:

if (!CheckExtension("GL_ARB_vertex_buffer_object"))
MessageBox(NULL, "You don't have VBO Support", "No VBO Support", MB_OK);

Obviously the MessageBox Call is assuming Windows but I'm sure you could write to a file or use OS independent calls.

P.S how do you get nice code scroll windows in my posts? Thanks
[Like this. Edit your post to see how it works. -Yann]

Jamie

[Edited by - Yann L on August 14, 2007 5:02:06 PM]

Share this post


Link to post
Share on other sites
Quote:
Original post by jsg007
It is quite weird...

No, it's not. If your test app is not bus-bandwidth bound (highly unlikely with only 250k triangles on a modern PCIe, or even an AGPx8 system), then you won't see the slightest difference between VAs and VBOs. Also, I highly suspect NVidia to cheat a little around the litteral (read: obsolete) wording of the GL specs, and cache VAs onboard. Which for all practical purposes make them equivalent to VBOs in terms of performance.

Never forget that profiling a stream processor (ie. a GPU) is very different than profiling a general purpose CPU. Unless you modify the part of the pipeline that happends to make the current bottleneck of the stream operation chain, you won't see any difference in performance at all. In fact, if you're eg. fragment bound, then immediate mode can be just as fast (or slow) as VBOs.

Share this post


Link to post
Share on other sites
r u testing in a small window eg 400x300 (or smaller)

i just tried my game ( which pushes >100k tris frame )
1366x766 VBO=51fps, VA=48fps
400x300 VBO=70fps, VA=58fps (much bigger gap)

preprocessing at 1366x768 on both

Share this post


Link to post
Share on other sites
Thanks Yann.

Was a bit weird at first, was shocked when the page loaded to see my code in blocks lol.

I would expect VBO's to be available for your graphics card (mine's really old but it still has it), maybe its a graphics driver thing?

Jamie

Share this post


Link to post
Share on other sites
Well, I made my app to be vertex bound, it renders to a small viewport,no texture or fragment program, it loads a model with ~61.000 triangles and renders it 4 times (that's about 250.000 triangles), in 4 different places (so there's no overdraw).

The VA is much faster than the immediate mode, but the VBO runs with the same speed as normal VA, just like in every application I have tested.

I also use the latest driver.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!