Help with VAR

Hi! I’m trying to use VAR with glDrawArrays(). However when I put my vertex information in AGP memory or video memory, it’s actually slightly slower than using regular system memory.
I’ve checked that the GL_VERTEX_ARRAY_RANGE is valid, and in the tests I’ve ran I’m not changing the vertex arrays at all so writing is not likely to be the bottleneck.
Is there any other reason why AGP or video memory might be slower than using system memory? I’m using a Quadro2 on a Pentium4.

Are you sure you’re transfer bound? If you’re fill/texture bound, and you put your data in video memory, then the video memory will now be fought over by the vertex fetch and the texture fetch and framebuffer write.

VAR will likely be slower if you don’t draw all your geometry in the same memory. Switching memory is insanely expensive with VAR.

I had the same problems with VAR (but it was not really bad).

However, today is not the time to use VAR anymore. In my opinion VAR is one of the worst things nVidia could do to OpenGL programmers.

Use Vertex Buffer Objects. VBO is VERY VERY VERY easy to use, usually better than VAR and a cross-vender extension. Certainly VAR will only stay in the drivers for backwards compatibility (was that word written correctly?).