To be brief:
'Immediate mode' means you're getting directly onto the hardware. Your commands are executed directly there is no delay no higher-level representations. As an example, OpenGL (being mostly an immediate mode API) might display a triangle after the following sequence of commands:
glBegin(GL_TRIANGLE); /* We want to draw a triangle */
glColor3f(1.0, 0.0, 0.0); /* the color of the first vertex */ glNormal3f(0.0, 0.0, 1.0); /* the normal of the first vertex */ glVertex3f(0.0, 0.0, 0.0); /* the first vertex position */
glColor3f(0.0, 1.0, 0.0); /* the color of the second vertex */ glNormal3f(1.0, 0.0, 1.0); /* the normal of the second vertex */ glVertex3f(1.0, 0.0, 0.0); /* the second vertex position */
glColor3f(0.0, 1.0, 0.0); /* the color of the third vertex */ glNormal3f(0.0, 1.0, 1.0); /* the normal of the third vertex */ glVertex3f(0.0, 1.0, 0.0); /* the third vertex position */
glEnd(); /* finished the triangle */
'Retained mode' means you are setting up an object that will perform the rendering operation itself by calling the immediate mode stuff. Common objects are triangle meshes, nurbs surfaces etc. The retained mode framework frees you from having to go to the low-level code (that's what is good about it) and it usually includes functionality that is not related to actual rendering such as collision detection (which is also good about it) but of course, since the retained mode stuff is a general framework it is usually not optimized for specific applications - and that is why most game programmers don't use it.
Thinking in terms of Smalltalk the 'immediate mode' is running byte codes and the 'retained mode' is using a class and its methods. And while I agree that the implementation of byte codes should be done in C/C++ I certainly don't agree on defining Smalltak classes in C++ ;-)
Andreas -- +===== Andreas Raab ========= (andreasr@wdi.disney.com) ==+ | Walt Disney Imagineering Phone: +1 818 544 5016 I I Glendale, CA Fax: +1 818 544 4544 I +======< http://isgwww.cs.uni-magdeburg.de/~raab >========+
From: Andrew C. Greenberg Reply To: squeak@cs.uiuc.edu Sent: Wednesday, July 28, 1999 5:01 AM To: squeak@cs.uiuc.edu Cc: recipient list not shown Subject: RE: Fwd: Quesa 0.0.2
Jeff,
Interfacing a retained mode framework from Squeak is - in my
understanding -
a very, very bad idea.
. . .
So, what I think we really need to have is ultra-fast immediate mode rendering with a highly flexible retained mode framework behind it.
I'm pretty sure I worked out the gist of the meaning of these terms. "retained mode framework" and "immediate mode" from the context. However, a little knowlege is a dangerous thing, and I don't know what I don't know about this stuff. Accordingly, I'd be obliged if someone would offer definitions so I can be sure.
squeak-dev@lists.squeakfoundation.org