PDA

View Full Version : GL_VERTEX_ARRAY_NV and GL_VERTEX_ARRAY_NV2



jide
02-19-2002, 04:52 AM
what are the differences between these 2 extensions :
GL_VERTEX_ARRAY_NV and GL_VERTEX_ARRAY_NV2

which is the best ?
i only use the first; is that better ?

IsaackRasmussen
02-19-2002, 05:23 AM
You should use the second, IIRC there were some design limitations in the first one that made the HW supporting it forced to wait in places where it could instead go on an transform more data.
Thus, you should actually see a speedboost just from changing the Ext name - I did.

Regardless, it's all described in the OpenGL spec by Nvidia, so it's a RTFM.

Isaack

jide
02-19-2002, 05:41 AM
i don't understand everything, but i understand that using the nv2 is better, so i'll try it.

thank you

jdie

stefan
02-19-2002, 08:19 AM
There are no new procedures or functions defined by NV_vertex_array_range2 (according to the spec). The only thing this extension introduces is a way to enable the vertex array extension without flushing the "vertex array range" by calling glEnableClientState(GL_VERTEX_ARRAY_RANGE_WITHOUT_ FLUSH_NV) instead of glEnableClientState(GL_VERTEX_ARRAY_RANGE_NV).

Thus if your application runs faster or not depends on how often you enable the vertex array range.


[This message has been edited by stefan (edited 02-19-2002).]

Diapolo
02-19-2002, 09:34 AM
Ive got a question, I saw that the GL_NV_vertex_array_range extension uses 2 new WGL extensions:

wglAllocateMemoryNV
wglFreeMemoryNV

There is no extra WGL extension string for them, so can I init the functions after I checked the GL Extensions string for the GL_NV_vertex_array_range?

Diapolo

Lev
02-19-2002, 11:08 AM
AFAIK yes

-Lev

jide
02-19-2002, 11:24 PM
Originally posted by stefan:
There are no new procedures or functions defined by NV_vertex_array_range2 (according to the spec). The only thing this extension introduces is a way to enable the vertex array extension without flushing the "vertex array range" by calling glEnableClientState(GL_VERTEX_ARRAY_RANGE_WITHOUT_ FLUSH_NV) instead of glEnableClientState(GL_VERTEX_ARRAY_RANGE_NV).

Thus if your application runs faster or not depends on how often you enable the vertex array range.


[This message has been edited by stefan (edited 02-19-2002).]

OK. And if i plan to enable the vertex array range only once at begining. So, my application may run more faster, won't it ?

thanx

jide

stefan
02-20-2002, 04:35 AM
If you enable it only once, you should NOT see any improvment, since you're not affected by the performance decrease caused by flushing.

jide
02-20-2002, 04:48 AM
OK, thanks.

And i think (of course) that flushing is needed in certain cases ! isn't it ?
for example, if i use more than one glDrawRangeElementExt !
I will need to call to this routine few or many times on a rendering (it depends).
So, if i enable without flush (so GL_VERTEX_ARRAY_RANGE_NV instead of GL_VERTEX_ARRAY_RANGE_NV2), at each time i call glDrawRangeElementExt (assuming i use VERTEX_ARRAY_EXT), i will draw the array in memory not flushed before last call ? so, if the first call uses 20 verticies, and the 2nd only 10, i could attempt to have 20 verticies (the 10 of the second call + the last 10 of the first call ?).
I wonder.


diapolo: for wgl, its wglAllocateMemoryNV and gwlFreeMemoryNV.

Fratt