Performance Question

I’ve implemented a short test Application to test the usage of Vertex Arrays and Vertex Buffer Objects … all works fine now but i’ve several perfomance lacks i couldn’t understood…

When i render nothing i got an FPS with 1.200 Frames. When i place one Quad with a scale from 15 to screen without any texture i lost 50% of the FPS to 600-630 in the Array Mode. There is no measure result between using VBO instad VertexArray…

Renderning 7 simple Quads reduces the FPS up to 200 … I’ve tried to run this Application on several PCs whith the same effect…

Knows anyone a possible bottleneck which i could have? This is no acceptable performance for any application …

Thx in advance,

This isn’t an advanced question.

VBOs are meant to improve performance when sending large amounts of geometry to the vpu. When you are only sending a few triangles it won’t make a performance difference.

As for what’s limiting your app there are 2 possiblities that I see. First is fill rate limitations of the vpu. If your window is 1024x768 and you’re running at 600 frames per second and you draw a single full screen quad per frame you are drawing over 450 million pixels per second. This is more than many graphics cards can draw. To see if this is your limitation make your window smaller. In your multi quad test make sure you draw things from front to back with z test on because modern graphics chips can kill kill z fail fragments very fast.

The other possiblity is that you are software limited. If this is the case changing window size won’t affect performance. To fix this you will want to either add profiling to your code or use a tool like vtune from intel.

Please check the link given in this thread:

It explains why you shouldn’t be worrying about your framerate when rendering such a low amount of triangles.

Your bottleneck is probably fillrate or clearing buffers.


Actually, he’s probably CPU limited on all the overhead of setting up/rendering a single frame. And probably CPU limited for each quad, as well, as there aren’t enough vertices in there to make up for the cost of changing state.

My own experiance shows that almost all simple programs are fill-limited…

Suppose you have 20 GB/second of VRAM bandwidth. At 600 fps in 1024x768, it’s not certain at all that you’re fill limited… “it depends”

Anyway, I think we agree he’s not vertex throughput limited :slight_smile: