PDA

View Full Version : glDrawArray+VBO increasing memory footprint



nikhil
07-01-2011, 05:12 AM
Hi forum,

I am writing a Windows based OpenGL viewer application.
I am using VBO + triangle strip + glDrawArrays method to render my meshes. Every thing is perfectly working on all machines.
In case of Windows Desktop with nVidia Quadro cards the working/peak working memory shoots when i first call glDrawArray.
While in case of laptops having nvidia mobile graphic cards the working memory or peak working memory does not shoot. Since last few days i am checking almost all forums/post/tuts about VBO memory issue. Tried all combinations of VBO like GL_STATIC_DRAW/DYNAMIC/STREAM, glMapbuffer/glunmapbuffer. But nothing stops shooting memory on my desktops.
I suspect that for VBO with ogl 1.5 i am missing some flags.
PS: I have almost 500 to 600 VBO's in my application. I am using array of structures ( i.e. v,n,c,t together in a structure). And I am not aligning my VBOs to 16k memory.
Can any one suggest me how I should go ahead to solve this issue. Any hints/pointers would be helpful.

-Nikhil

Alfonse Reinheart
07-01-2011, 05:38 AM
What's the issue? That the working memory suddenly increases at some point? Why is this a problem?

mhagain
07-01-2011, 06:13 AM
Is it causing a problem for you? If not then there's probably no need to worry. OpenGL needs to store VBO contents in video RAM (it doesn't always, but let's just work with this), which needs to be backed up by a system RAM copy, so this kind of behaviour is perfectly normal.

500-600 VBOs seems quite high for what you're doing; you might be better off amalgamating these and adjusting the parameters of your glDrawArrays calls to save on VBO swapping overhead. glDrawElements with GL_TRIANGLES (or primitive restart) should give you higher performance too.