From: Gareth H. <ga...@va...> - 2000-08-04 21:51:31
|
Bill Baxter wrote: > > Sorry to be such a bother, but I think I may have partially found the > answer to my question. Am I correct in thinking that CVA is just the > support for Non-ARB GL Extension number 97 as described by this > document?: > http://oss.sgi.com/projects/ogl-sample/registry/EXT/compiled_vertex_array.txt > > I wasn't aware of this extension. Is it commonly used in the real > world? There seems to be an awful lot of code in Mesa to support it > given that only one sample/demo uses it as far as I can see > (isosurf.c). Heh, I wonder if that means Quake uses it. Seeing as Keith's not answering email, I'll field this one. Compiled vertex arrays are essentially used by the application to lock down one or more of the arrays (vertex, texture coords etc) when they aren't going to change. This allows the driver (Mesa, in this case) to preprocess the arrays and store them in this preprocessed form, rather than having to process the arrays each time say glDrawElements() is called. Let's just say this can be a lot faster if used correctly. Compiling the arrays into some optimized form might result in hardware-format arrays in local or AGP memory on a hardware T&L card, for instance. Doing this once, and then rendering many primitives with calls to glDrawElements() or equivalent, is pretty darned fast. At least Quake 2 and Quake 3 use EXT_compiled_vertex_array. It's generally considered the fastest way to render in OpenGL on the PC platform at the moment. isosurf had CVA and other specialized paths implemented to test this functionality in Mesa. It's nice to be able to exercise these paths with a simple demo program. -- Gareth |