quote:Original post by DJSnow
no, you understand me wrong - i meant "there should be more gain than 5 - 10%, if CVa's are also located in video memory"; because VBO gains widely more than 5 - 10%.
Reread what I said earlier. CVAs aren't guaranteed to cache your entire transformed vertex arrays in video memory. The driver may ignore CVAs completely, or only cache some vertices. You can probably think of it as hint. You're basically saying "Until I tell you otherwise, I'm not going to change this data, so do whatever you can to optimize it."
quote:Original post by DJSnow
i'm not sure about the behvaiour of this extension - i mean, why do you call it while the initializatin function ?! what would the call look like if i have multiple vertex arrays... ?
specifies the "0" as parameter of glLockArraysExt() in your code the number of the vertexarray or something like this ?!
I think Promit probably helped with some of your confusion, but let me respond to this anyway. In that demo, I'm only using one set of vertex arrays. Since I'm never changing them, I can lock them immediately after enabling them and passing them to gl*Pointer(). If you're using multiple sets of arrays, then using CVAs isn't going to buy you anything, unless you're using multipass techniques. The driver may cache them, but you'll be unlocking and replacing the arrays before it has a chance to use the cached data.
Btw, the parameters passed to glLockArraysEXT() are similar to the start and count parameters in glDrawArrays(). The first param is the first vertex to lock, and the second is how many vertices to lock.