VBOs not giving any performance
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.
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.
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.
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.
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
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
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?
It is quite weird...
Is someone else experiencing this on a 6600?
I use something such as this:
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]
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]
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.
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
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
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
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
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.
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.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement