After doing a search on this topic i still need a little direction. please correct me if i misunderstood,
My understanding of what i got from here/nehe/gamestrua/...
locking arrays -> lock what will not be recalculated per frame.
sort by state -> cuz stat changes hurt.
drawrange/element ->is only way not to run thru the whole aray if only partial needed.
I have theese questions still.
1: if i have 10 zones @ 10k to 100k vert per zone. could i place all in same array and keep all nonvisible zones locked by range?(asuming i do my own partial zone culling) reason i ask this is i hear issues of state changes/pipeline or issues when arrays are changed.
2: would it be better to keep zone in seperate arrays or does it cause performance issues?(assume multiple zones can be in view at once once)
3: alot of you are using VAR, how compatible is it with other than NV hardware? i would like to use a type with most compatibility. this looks nice for the reason that my terrain will very large and i like the idea of using system memory for arrays due to size.
Im new to open gl and only in planning stages of a engine i want to make. Any ideas or advice would be great.
Re: CVA questions
CVA is very implementation dependent, especially with respect to the amount of elements you can lock. If you try to lock 100K elements, the driver will probably do nothing at all when you call glLockArrays, and you will be back to the regular vertex arrays path (no perf gain).
Regarding VAR, it is for NV hardware only. ATI has an extension designed to speed up rendering : ATI_vertex_array_object (VAO).
Of course, this extension works only on ATI hardware.
The fastest path that works on all platforms is CVA (ok, CVA is an extension, but in fact it is supported by all consumer-level boards since Quake uses it).