diff options
author | phil <[email protected]> | 2017-12-29 22:53:47 +1300 |
---|---|---|
committer | phil <[email protected]> | 2017-12-29 22:53:47 +1300 |
commit | 54f1415fa01061f0bcc5126605713b9a391cec46 (patch) | |
tree | 9f8a34f8219ca893878bc22e0fe14d2d57c5f436 /doc-files/Immediate.html | |
parent | b682efa3d0936f68105fc017f7d0ae6dc96fd073 (diff) |
Some excellent doc files added
Diffstat (limited to 'doc-files/Immediate.html')
-rw-r--r-- | doc-files/Immediate.html | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/doc-files/Immediate.html b/doc-files/Immediate.html new file mode 100644 index 0000000..101fe22 --- /dev/null +++ b/doc-files/Immediate.html @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> + <meta content="text/html; charset=ISO-8859-1" + http-equiv="content-type"> + <title>Java 3D API - Immediate-Mode Rendering</title> +</head> +<body> +<h2>Immediate-Mode Rendering</h2> +<p>Java 3D is fundamentally a scene graph-based API. Most of +the constructs in the API are biased toward retained mode and +compiled-retained mode rendering. However, there are some applications +that want both the control and the flexibility that immediate-mode +rendering offers. +</p> +<p>Immediate-mode applications can either use or ignore Java 3D's +scene +graph structure. By using immediate mode, end-user applications have +more freedom, but this freedom comes at the expense of performance. In +immediate mode, Java 3D has no high-level information concerning +graphical objects or their composition. Because it has minimal global +knowledge, Java 3D can perform only localized optimizations on +behalf +of the application programmer. +</p> +<p> +</p> +<h2>Two Styles of Immediate-Mode +Rendering</h2> +Use of Java 3D's immediate mode falls into one of two categories: +pure +immediate-mode rendering and mixed-mode rendering in which immediate +mode and retained or compiled-retained mode interoperate and render to +the same canvas. The Java 3D renderer is idle in pure immediate +mode, +distinguishing it from mixed-mode rendering. +<h3>Pure Immediate-Mode +Rendering</h3> +Pure immediate-mode rendering provides for those applications and +applets that do not want Java 3D to do any automatic rendering of +the +scene graph. Such applications may not even wish to build a scene graph +to represent their graphical data. However, they use Java 3D's +attribute objects to set graphics state and Java 3D's geometric +objects +to render geometry. +<hr noshade="noshade"><b>Note:</b> Scene antialiasing is not supported +in pure immediate mode. +<hr noshade="noshade">A pure immediate mode application must create a +minimal set of Java 3D +objects before rendering. In addition to a Canvas3D object, the +application must create a View object, with its associated PhysicalBody +and PhysicalEnvironment objects, and the following scene graph +elements: a VirtualUniverse object, a high-resolution Locale object, a +BranchGroup node object, a TransformGroup node object with associated +transform, and, finally, a ViewPlatform leaf node object that defines +the position and orientation within the virtual universe that generates +the view (see <a href="#Figure_1">Figure +1</a>). +<p><a name="Figure_1"></a><img style="width: 500px; height: 359px;" + alt="Minimal Immediate-Mode Structure" + title="Minimal Immediate-Mode Structure" src="Immediate1.gif"></p> +<p> +</p> +<ul> + <font size="-1"><b><i>Figure 1</i> – Minimal Immediate-Mode Structure</b></font> +</ul> +<p> +Java 3D provides utility functions that create much of this +structure +on behalf of a pure immediate-mode application, making it less +noticeable from the application's perspective-but the structure must +exist. +</p> +<p>All rendering is done completely under user control. It is necessary +for the user to clear the 3D canvas, render all geometry, and swap the +buffers. Additionally, rendering the right and left eye for stereo +viewing becomes the sole responsibility of the application. +</p> +<p>In pure immediate mode, the user must stop the Java 3D +renderer, via +the Canvas3D object <code>stopRenderer()</code> +method, prior to adding the Canvas3D object to an active View object +(that is, one that is attached to a live ViewPlatform object). +</p> +<p> +</p> +<h3>Mixed-Mode Rendering</h3> +Mixing immediate mode and retained or compiled-retained mode requires +more structure than pure immediate mode. In mixed mode, the +Java 3D +renderer is running continuously, rendering the scene graph into the +canvas. +<p>The basic Java 3D <em>stereo</em> rendering loop, executed for +each +Canvas3D, is as follows: +</p> +<pre><hr><br>clear canvas (both eyes)<br></pre> +<pre>call preRender() <strong><kbd>// user-supplied method<br></kbd></strong>set left eye view<br>render opaque scene graph objects<br>call renderField(FIELD_LEFT) <strong><kbd>// user-supplied method<br></kbd></strong>render transparent scene graph objects<br>set right eye view<br>render opaque scene graph objects again<br>call renderField(FIELD_RIGHT) <strong><kbd>// user-supplied method<br></kbd></strong>render transparent scene graph objects again<br>call postRender() <strong><kbd>// user-supplied method<br></kbd></strong>synchronize and swap buffers<br></pre> +<pre>call postSwap() <strong><kbd>// user-supplied method<br></kbd></strong><br><hr></pre> +The basic Java 3D <em>monoscopic</em> rendering loop is as +follows: +<pre><hr><br>clear canvas<br></pre> +<pre>call preRender() <strong><kbd>// user-supplied method<br></kbd></strong>set view<br>render opaque scene graph objects<br>call renderField(FIELD_ALL) <strong><kbd>// user-supplied method<br></kbd></strong>render transparent scene graph objects<br>call postRender() <strong><kbd>// user-supplied method<br></kbd></strong>synchronize and swap buffers<br></pre> +<pre>call postSwap() <strong><kbd>// user-supplied method<br></kbd></strong><br><hr></pre> +In both cases, the entire loop, beginning with clearing the canvas and +ending with swapping the buffers, defines a frame. The application is +given the opportunity to render immediate-mode geometry at any of the +clearly identified spots in the rendering loop. A user specifies his or +her own rendering methods by extending the Canvas3D class and +overriding the <code>preRender</code>, <code>postRender</code>, <code>postSwap</code>, +and/or <code>renderField</code> methods. +</body> +</html> |