gl question - editing large objects

Kurt Akeley kurt at cashew.asd.sgi.com
Fri Jul 27 04:06:30 AEST 1990


no, it is not the case that GL objects are obsolete.  (although it was
reasonable to conclude this, based on the lack of development attention
that they received prior to the 3.3 release.)  in the 3.3 release
objects have been extended to include ALL the new drawing commands,
such as bgnpolygon(), c(), n(), v(), t(), and endpolygon().  the
execution performance of objects is now very high, in some cases slightly
higher than can be achieved by immediate-mode calls.

however, the editing performance of objects is poorer than ever, as
a result of some arcane interactions between shared libraries and
code caches.  thus (for now) rule one:

    if performance is an issue, use GL objects only for data that
    never change.

in general, we continue to encourage you to program using the immediate
mode capabilities of the GL.  immediate mode coding supports interractive
graphics driven by changing data.  that's the way we like to do graphics.
however, there are some cases where GL objects may be preferred to GL
immediate mode:

    1.	given our renewed comittment to GL objects, their performance is
	likely to track the inherent performance of new machines, whereas
	your immediate mode code may not (due, perhaps, to subtle issues
	like quad-word alignment, which change from machine to machine, and
	which we can handle in our object storage format).  if your code
	basically views static objects, it may port better if it is object
	based.

    2.	in upcoming releases DGL and GL will be better integrated, and GL
	programs will more often be run across networks (as in the X model).
	because objects are stored and traversed on the server, rather than
	on the client, objects will typically execute faster than immediate
	code when client and server are different machines.

finally, while GL objects are not being obsoleted, other parts of the
current GL
will be.  these include (definitely) all the old-style drawing commands, such
as pnt, move/draw, pmv/pdr/pclos, poly/polf, and (likely) the old-style pixel
commands, such as readpixels/writepixels and readRGB/writeRGB.

-- kurt



More information about the Comp.sys.sgi mailing list