PDA

View Full Version : Rendering matrices really quickly



Satanic Dogus
09-21-2001, 12:16 PM
I import my data, which is a bunch of three dimentional co-ordinates into a bunch of matrices. I want to connect them by a wireframe and render them REALLY fast. Any ideas how?
Like some special algorithm or something.
Thanks

V--man
09-21-2001, 01:27 PM
Take a look at glDrawElements which may be the fastest (depends on the card and number of vertices, etc)

There is glDrawArray. Nvidia has an other type of glDrawElements and ATI has their own. You also have display lists (glNewList ,glEndList, glCallList and glCallLists)

A demo exists in the red book.

V-man

Korval
09-21-2001, 07:01 PM
"Nvidia has an other type of glDrawElements and ATI has their own."

No they don't. They both support glDrawRangeElementsEXT (which became a standard part of the OpenGL spec in either 1.2 or 1.3). They support separate vertex array extensions, but not drawing extensions.

V--man
09-22-2001, 01:39 PM
Yes they both have the standard glDrawElements but nvidia has another one with the same name. In nvidia's case, you need to make a call to
glEnableClientStateGL_VERTEX_ARRAY_RANGE_NV);
and
glEnableClientState(GL_VERTEX_ARRAY);

Call it CVA if you wish, but I've seen significant performance difference.

V-man

ffish
09-22-2001, 04:52 PM
V--man, you appear to be confusing the term "glDrawElements" with "vertex arrays". NVIDIA's vertex array range extension (VAR) is a mechanism for managing vertex data transfer, but it doesn't redefine glDrawElements or any of the other vertex array rendering functions.

Satanic Dogus, the NVIDIA VAR extension is certainly the fastest way to render your data on their hardware. I don't know much about ATI's latest offering with similar functionality but you should look at that as well. Display lists are good for static data. If you want portability, compiled vertex arrays (CVA's) are supported by most cards and may be faster than regular vertex arrays. In summary, here's a guess at performance:
(i) NVIDIA's VAR/ATI's equivalent.
(ii) Display lists.
(iii) CVA's.
(iv) plain vertex arrays.
(v) immediate mode rendering.

Also note that if you are drawing in wireframe you will suffer a performance hit. Most (all) consumer cards don't work well with wireframe. If you have a GeForce, you could try the Quadro conversion hack for better wireframe performance. The best formats for your data are triangle strips or quad strips. Of course, the rendering method you choose may be highly dependent on your particular application.

Hope that helps.

Satanic Dogus
09-24-2001, 01:19 PM
I have an SGI octane, and am running Irix 6.5.
I'm don't really familiar with my hardware, I'm basically a PC guy fumbling in the dark. I'm quite new to OpenGL, but not to programming.
I think triangles will work....so what next?
thanks!

chrisATI
09-24-2001, 05:39 PM
Originally posted by Satanic Dogus:
I have an SGI octane, and am running Irix 6.5.
I'm don't really familiar with my hardware, I'm basically a PC guy fumbling in the dark. I'm quite new to OpenGL, but not to programming.
I think triangles will work....so what next?
thanks!

Display lists are generally very fast and they are part of the opengl specification (ie. no extensions necessary).