diff options
author | Sven Gothel <[email protected]> | 2011-09-17 15:00:46 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-09-17 15:00:46 +0200 |
commit | ad27f9e288de02941a856d4c27bf1de0a536a50c (patch) | |
tree | 25ac88bb83080e82116d41a0041e867d19d8d383 /doc/NEWT-Overview.html | |
parent | 64feda2fa7611627e31f55ecc7cf86e290fdf4e3 (diff) |
Make jogl-test-applets look nice; Add NEWT Overview; Link both to JOGL's index page
Diffstat (limited to 'doc/NEWT-Overview.html')
-rw-r--r-- | doc/NEWT-Overview.html | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/doc/NEWT-Overview.html b/doc/NEWT-Overview.html new file mode 100644 index 000000000..430a81c0b --- /dev/null +++ b/doc/NEWT-Overview.html @@ -0,0 +1,181 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <link href="../../style.css" rel="stylesheet" type="text/css"/> + <title>NEWT - JOGL’s High Performance Native Windowing Toolkit</title> + </head> + <body> + <div id="container"> + <div id="header"> + <div id="slogan">NEWT & JOGL</div> + <div id="logo"><a href="http://jogamp.org/jogl/">OpenGL & JOGL</a></div> + </div> + <div id="menu"> + <ul> + <li><a href="http://jogamp.org/">Home</a></li> + <li><a href="../../gluegen/www/">Gluegen</a></li> + <li><a href="../../joal/www/">JOAL</a></li> + <li><a href="../../jocl/www/">JOCL</a></li> + <li><a href="../../jogl/www/">JOGL</a></li> + <li><a href="../../demos/www/">Demos</a></li> + <li><a href="../../wiki/">Wiki</a></li> + <li><a href="../../deployment/jogl-next/javadoc_public/">JavaDoc</a></li> + <li><a href="../../blog/">Blogs</a></li> + <li><a href="../../forum.html">Forums</a></li> + </ul> + </div> + <div id="main"> + <div id="text" class="fill"> +<h2>NEWT - JOGL’s High Performance Native Windowing Toolkit</h2> + +<h4>NEWT Usage</h4> + +<p> +Consider the classic demo code + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/GearsES2.java;hb=HEAD">GearsES2.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/GearsES2.java;h=d92d98894acc4cfe42e77ec316858d16d202b5b8;hb=HEAD">v2.0-rc3</a>], +which implements a +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/javax/media/opengl/GLEventListener.html">GLEventEventListener</a>.</p> + +<p> +The simple application +<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java;hb=HEAD">TestGearsES2NEWT.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestGearsES2NEWT.java;h=df86b83d2c3af9efed44d973aac24e678e85cd4c;hb=HEAD">v2.0-rc3</a>] +creates a NEWT +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/newt/opengl/GLWindow.html">GLWindow</a>, +which implements a +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/javax/media/opengl/GLAutoDrawable.html">GLAutoDrawable</a> +and hence is able to add the demo code. +NEWT’s GLWindow also implements the NEWT <a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/newt/Window.html">Window</a>, +which gives you full control of the native windowing, as shown in the demo.</p> + +<p> +Finally we just add our GLWindow to an +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/util/Animator.html">Animator</a> instance, +which renders our demo in it's own rendering thread independent from user input.</p> + +<p> +For NEWT’s AWT integration, please read the dedicated section below. +</p> + +<h4>NEWT Threading Overview</h4> + +<p>NEWT’s event model is pretty simple.<br /> +It spawns one Event Dispatch Thread (EDT) for each unique Display which role is to handle:</p> +<ul> +<li> input events </li> +<li> window lifecycle actions (window visibility, resize, .. etc) </li> +<li> <b>not</b> rendering </li> +</ul> + +<p> +High performance rendering is achieved without being blocked by input events or vice versa.<br/> +As demonstrated in the above NEWT example, rendering does not disturb or lag user input.<br/> +This gives you fluent animation even for complex models.</p> + +<h4>NEWT’s AWT integration and NEWT Applet’s</h4> + +<p> +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/newt/awt/NewtCanvasAWT.html">NewtCanvasAWT</a>, +representing an AWT Canvas, allows you to hook a NEWT Window into it.<p/> +Since the NewtCanvasAWT is an AWT heavyweight Component, this gives you the ability hook NEWT into an AWT UI.<br/> +<p> +The implementation uses the AWT native JAWT API to reparent the NEWT Window natively into the AWT one<br/> +and hence is even more compatible with JOGL’s GLCanvas implementation.<p/> +<p> +This enables us to use both worlds, AWT/Swing UI and decoupled high performance rendering.</p> + +<p> +<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cAWT.java;hb=HEAD">TestParenting01cAWT.java</a> +[<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cAWT.java;h=4477c3f8e8ebc43c91ea90a82af69a5bb0f38091;hb=HEAD">v2.0-rc3</a>] +shows you how to add an GLWindow to an NewtCanvasAWT, which iself is added to an AWT Frame.</br> +It also shows how the NewtCanvasAWT can be easily removed from the AWT Frame and placed into another AWT Container.<br/> +Since we use native reparenting, the native window resource keeps alive and hence your OpenGL application (GLEventListener) +is not being asked to dispose all resources.<br/> +<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cSwingAWT.java;hb=HEAD">TestParenting01cSwingAWT.java</a> +[<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cSwingAWT.java;h=478e00007b14f2d4d14da3d5ccca0500b441ba96;hb=HEAD">v2.0-rc3</a>] +shows the same example using Swing.<br/> +</p> + +<p> +Last but not least, the above mechanism can be used to show NEWT Window’s in an AWT Applet.<br/> +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/newt/awt/applet/JOGLNewtApplet1Run.html">JOGLNewtApplet1Run</a> +is an Applet launcher for any +<a href="/deployment/jogamp-next/javadoc/jogl/javadoc/javax/media/opengl/GLEventListener.html">GLEventEventListener</a> +exposing a default constructor. +See it <a href="/deployment/jogamp-next/jogl-test-applets.html"><i>alive</i> here</a>. +</p> + + +<!--- + <a href="">TestParenting01cSwingAWT.java</a> + [<a href="">v2.0-rc3</a>] +--> + +<h4>How to pass user input back to the rendering loop ?</h4> + +The following example shows you how to use a fifo to pipe events from the EDT (listener) to the rendering loop. +<ul> +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java;hb=HEAD">TestParenting02NEWT.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting02NEWT.java;h=13aad0c25873a29f8c5df80e71bb76c96c5d4197;hb=HEAD">v2.0-rc3</a>] +</li> +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/KeyAction.java;hb=HEAD">KeyAction.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/KeyAction.java;h=3313ec65c59783c67b01cd6bc387a25df943e60f;hb=HEAD">v2.0-rc3</a>] +</li> +</ul> +<p><b>How to inject some GL action to the rendering loop ?</b><br /> + Shows you how to inject GL render actions into a GL fifo from another thread.</p> +<ul> +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cSwingAWT.java;hb=HEAD">TestParenting01cSwingAWT.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/TestParenting01cSwingAWT.java;h=478e00007b14f2d4d14da3d5ccca0500b441ba96;hb=HEAD">v2.0-rc3</a>] +</li> + +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/GLRunnableDummy.java;hb=HEAD">GLRunnableDummy.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/newt/parenting/GLRunnableDummy.java;h=1ca74774b73963ba4e3b20fc3491b0b2f7bfe454;hb=HEAD">v2.0-rc3</a>] +</li> +</ul> + +<p><b>AWT agnostic input event listener</b><br /> +We also have a way to write AWT agnostic input event listener:</p> +<ul> +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNEWT.java;hb=HEAD">TestGearsNEWT.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/newt/TestGearsNEWT.java;h=4b6f7999a194bf8515d828124239b0acba81fd49;hb=HEAD">v2.0-rc3</a>] +</li> + +<li> + <a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java;hb=HEAD">TestGearsAWT.java</a> + [<a href="http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/TestGearsAWT.java;h=8ab641267c8a4e958ccf1709bc07fd050c8a7213;hb=HEAD">v2.0-rc3</a>] +</li> +</ul> + +<p>We provide some utilities to make life a bit easier.<br /> +These are not really necessary, ie you could write and use your own, sure.</p> +<p>The NEWT threading requirements are easy – they are just <b>none</b> for rendering,<br /> + +and the input event listener should better not lock the rendering GL context.<br /> +Well, they can using <code>GLContext.setSynchronized(true) etc .. </code>,<br /> +but that would be a pity performance wise.</p> + + <h3>References</h3> +<ul> + <li><a href="/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/newt/package-summary.html">NEWT API Overview</a></li> +</ul> + </div> + </div> + <div id="footer"> + <div id="footer_left"> + <span>JogAmp.org</span> + by <a href="http://jogamp.org">http://jogamp.org</a> + is licensed under a <br/> + <a href="http://creativecommons.org/licenses/by/3.0/us/">Creative Commons Attribution 3.0 License</a>. + </div> + </div> + </div> + </body> +</html> |