summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2005-07-07 22:50:13 +0000
committerKenneth Russel <[email protected]>2005-07-07 22:50:13 +0000
commit3cce9fefe99b2a9fe7372c5be21ba7a49f98bf66 (patch)
treef1c260f62b6659b9fb5fa6d96e4c8723e4fc55d7
parent9d278dff86c07218ff2616745381ccc2689f8ea5 (diff)
Merged with main trunk (tag JOGL_PRE_1_1_1)
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/branches/JSR-231@98 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
-rw-r--r--make/build.xml20
-rw-r--r--src/demos/cg/runtime_ogl/cgGL_vertex_example.java14
-rw-r--r--src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java26
-rw-r--r--src/demos/gears/Gears.java9
-rw-r--r--src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java16
-rw-r--r--src/demos/jgears/JGears.java37
-rwxr-xr-xsrc/demos/jrefract/JRefract.java526
-rwxr-xr-xsrc/demos/multisample/Multisample.java2
-rw-r--r--src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java1
-rw-r--r--src/demos/tess/Tess.java8
-rwxr-xr-xsrc/demos/testContextDestruction/TestContextDestruction.java9
-rw-r--r--src/demos/testContextSharing/TestContextSharing.java9
-rw-r--r--src/demos/util/Bunny.java2
-rw-r--r--src/demos/util/DDSReader.java2
-rw-r--r--src/demos/util/DurationTimer.java2
-rw-r--r--src/demos/util/DxTex.java2
-rw-r--r--src/demos/util/FloatList.java2
-rw-r--r--src/demos/util/IntList.java2
-rw-r--r--src/demos/util/LEDataInputStream.java2
-rw-r--r--src/demos/util/MD2.java2
-rw-r--r--src/demos/util/ObjReader.java12
-rw-r--r--src/demos/util/SystemTime.java2
-rw-r--r--src/demos/util/TGAImage.java2
-rw-r--r--src/demos/util/Time.java2
-rw-r--r--src/demos/util/Triceratops.java2
-rw-r--r--src/demos/vertexArrayRange/VertexArrayRange.java13
-rw-r--r--src/demos/vertexBufferObject/VertexBufferObject.java5
-rw-r--r--src/demos/vertexProgRefract/VertexProgRefract.java30
-rw-r--r--www/index.html68
-rw-r--r--www/webstart/GearsTmp.jnlp3
-rw-r--r--www/webstart/HWShadowmapsSimple.jnlp3
-rw-r--r--www/webstart/InfiniteShadowVolumes.jnlp3
-rwxr-xr-xwww/webstart/JRefract.jnlp3
-rwxr-xr-xwww/webstart/JRefractSingleThreaded.jnlp3
-rw-r--r--www/webstart/ProceduralTexturePhysics.jnlp3
-rw-r--r--www/webstart/VertexArrayRange.jnlp3
-rw-r--r--www/webstart/VertexBufferObject.jnlp3
-rw-r--r--www/webstart/VertexProgRefract.jnlp3
-rw-r--r--www/webstart/VertexProgWarp.jnlp3
-rw-r--r--www/webstart/jogl-demos-data.jarbin4156782 -> 7853889 bytes
-rw-r--r--www/webstart/jogl-demos-util.jarbin134438 -> 142400 bytes
-rw-r--r--www/webstart/jogl-demos.jarbin162353 -> 264519 bytes
42 files changed, 699 insertions, 160 deletions
diff --git a/make/build.xml b/make/build.xml
index 95afeee..2f330f0 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -31,7 +31,15 @@
</fail>
</target>
- <target name="init" depends="java.class.path.validate">
+ <target name="setup.cg.excludes" unless="jogl.cg">
+ <property name="jogl.cg.excludes" value="demos/cg/**,demos/hdr/**" />
+ </target>
+
+ <target name="skip.cg.excludes" if="jogl.cg">
+ <property name="jogl.cg.excludes" value="" />
+ </target>
+
+ <target name="init" depends="java.class.path.validate,setup.cg.excludes,skip.cg.excludes">
<property name="jogl.jar" value="../../jogl/build/jogl.jar" />
<property name="classes" value="../build/classes" />
<property name="src" value="../src" />
@@ -50,7 +58,7 @@
<pathelement path="${classpath}" />
<pathelement location="${jogl.jar}" />
</path>
- <javac destdir="${classes}" excludes="demos/cg/**" source="1.4" debug="true" debuglevel="source,lines">
+ <javac destdir="${classes}" excludes="${jogl.cg.excludes}" source="1.4" debug="true" debuglevel="source,lines">
<src path="${src}" />
<classpath refid="jogl.classpath" />
</javac>
@@ -59,6 +67,14 @@
<exclude name="gleem/**" />
<exclude name="demos/util/**" />
</fileset>
+ <fileset dir="${src}">
+ <include name="demos/cg/**/*.cg" />
+ </fileset>
+ <fileset dir="${src}">
+ <include name="demos/hdr/shaders/**/*.cg" />
+ <include name="demos/hdr/shaders/**/*.arbvp1" />
+ <include name="demos/hdr/shaders/**/*.arbfp1" />
+ </fileset>
</jar>
<jar destfile="${jogl.demos.util.jar}">
<fileset dir="${classes}">
diff --git a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java b/src/demos/cg/runtime_ogl/cgGL_vertex_example.java
index ec2cb9a..f1f41dd 100644
--- a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java
+++ b/src/demos/cg/runtime_ogl/cgGL_vertex_example.java
@@ -31,11 +31,14 @@
*
*/
+package demos.cg.runtime_ogl;
+
import net.java.games.cg.*;
import net.java.games.jogl.*;
import java.awt.*;
import java.awt.event.*;
+import java.io.*;
/**
* cgGL_vertex_example: simple demo of Nvidia CgGL API. Based upon C version
@@ -187,9 +190,14 @@ public class cgGL_vertex_example implements GLEventListener
CheckCgError();
/* Test adding source text to context */
- Program = CgGL.cgCreateProgramFromFile(
- Context, CgGL.CG_SOURCE, "cgGL_vertex_example.cg",
- profile, null, null);
+ try {
+ Program = CgGL.cgCreateProgramFromStream(
+ Context, CgGL.CG_SOURCE,
+ getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl/cgGL_vertex_example.cg"),
+ profile, null, null);
+ } catch (IOException e) {
+ throw new RuntimeException("Error loading Cg vertex program", e);
+ }
CheckCgError();
System.err.println(
diff --git a/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java b/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java
index 3ceabc0..0c389e1 100644
--- a/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java
+++ b/src/demos/cg/runtime_ogl_vertex_fragment/runtime_ogl_vertex_fragment.java
@@ -31,6 +31,8 @@
*
*/
+package demos.cg.runtime_ogl_vertex_fragment;
+
import net.java.games.cg.*;
import net.java.games.jogl.*;
import net.java.games.jogl.util.*;
@@ -67,9 +69,6 @@ public class runtime_ogl_vertex_fragment implements GLEventListener
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
canvas.addGLEventListener(new runtime_ogl_vertex_fragment());
- // Use debug pipeline
- canvas.setGL(new DebugGL(canvas.getGL()));
-
frame.add(canvas);
frame.setSize(512, 512);
final Animator animator = new Animator(canvas);
@@ -94,6 +93,9 @@ public class runtime_ogl_vertex_fragment implements GLEventListener
public void init(GLDrawable drawable)
{
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
// Basic Cg setup; register a callback function for any errors
@@ -235,8 +237,13 @@ public class runtime_ogl_vertex_fragment implements GLEventListener
// Load and compile the vertex program from demo_vert.cg; hold on to the
// handle to it that is returned.
- vertexProgram = CgGL.cgCreateProgramFromFile(context, CgGL.CG_SOURCE, "demo_vert.cg",
- vertexProfile, null, null);
+ try {
+ vertexProgram = CgGL.cgCreateProgramFromStream(context, CgGL.CG_SOURCE,
+ getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl_vertex_fragment/demo_vert.cg"),
+ vertexProfile, null, null);
+ } catch (IOException e) {
+ throw new RuntimeException("Error loading Cg vertex program", e);
+ }
if (!CgGL.cgIsProgramCompiled(vertexProgram))
CgGL.cgCompileProgram(vertexProgram);
@@ -245,8 +252,13 @@ public class runtime_ogl_vertex_fragment implements GLEventListener
CgGL.cgGLLoadProgram(vertexProgram);
// And similarly set things up for the fragment program.
- fragmentProgram = CgGL.cgCreateProgramFromFile(context, CgGL.CG_SOURCE, "demo_frag.cg",
- fragmentProfile, null, null);
+ try {
+ fragmentProgram = CgGL.cgCreateProgramFromStream(context, CgGL.CG_SOURCE,
+ getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl_vertex_fragment/demo_frag.cg"),
+ fragmentProfile, null, null);
+ } catch (IOException e) {
+ throw new RuntimeException("Error loading Cg fragment program", e);
+ }
if (!CgGL.cgIsProgramCompiled(fragmentProgram)) {
CgGL.cgCompileProgram(fragmentProgram);
}
diff --git a/src/demos/gears/Gears.java b/src/demos/gears/Gears.java
index 775dcf0..da8fdba 100644
--- a/src/demos/gears/Gears.java
+++ b/src/demos/gears/Gears.java
@@ -17,11 +17,6 @@ public class Gears {
Frame frame = new Frame("Gear Demo");
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
- // Use debug pipeline
- // canvas.setGL(new DebugGL(canvas.getGL()));
- System.err.println("CANVAS GL IS: " + canvas.getGL().getClass().getName());
- System.err.println("CANVAS GLU IS: " + canvas.getGLU().getClass().getName());
-
canvas.addGLEventListener(new GearRenderer());
frame.add(canvas);
frame.setSize(300, 300);
@@ -52,7 +47,11 @@ public class Gears {
private boolean mouseRButtonDown = false;
public void init(GLDrawable drawable) {
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
+
System.err.println("INIT GL IS: " + gl.getClass().getName());
gl.setSwapInterval(1);
diff --git a/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java b/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java
index 13f3997..f97e875 100644
--- a/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java
+++ b/src/demos/hwShadowmapsSimple/HWShadowmapsSimple.java
@@ -161,12 +161,8 @@ public class HWShadowmapsSimple {
class Listener implements GLEventListener {
public void init(GLDrawable drawable) {
- // init() might get called more than once if the GLCanvas is
- // added and removed, but we only want to install the DebugGL
- // pipeline once
- // if (!(drawable.getGL() instanceof DebugGL)) {
- // drawable.setGL(new DebugGL(drawable.getGL()));
- // }
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
@@ -378,12 +374,8 @@ public class HWShadowmapsSimple {
class PbufferListener implements GLEventListener {
public void init(GLDrawable drawable) {
- // init() might get called more than once if the GLCanvas is
- // added and removed, but we only want to install the DebugGL
- // pipeline once
- // if (!(drawable.getGL() instanceof DebugGL)) {
- // drawable.setGL(new DebugGL(drawable.getGL()));
- // }
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
diff --git a/src/demos/jgears/JGears.java b/src/demos/jgears/JGears.java
index 6adc528..59e6c79 100644
--- a/src/demos/jgears/JGears.java
+++ b/src/demos/jgears/JGears.java
@@ -2,6 +2,7 @@ package demos.jgears;
import java.awt.*;
import java.awt.event.*;
+import javax.swing.*;
import net.java.games.jogl.*;
@@ -14,16 +15,33 @@ import net.java.games.jogl.*;
public class JGears {
public static void main(String[] args) {
- Frame frame = new Frame("Gear Demo");
- GLJPanel drawable = GLDrawableFactory.getFactory().createGLJPanel(new GLCapabilities());
+ JFrame frame = new JFrame("Gear Demo");
+ frame.getContentPane().setLayout(new BorderLayout());
+ GLCapabilities caps = new GLCapabilities();
+ caps.setAlphaBits(8);
+ final GLJPanel drawable = GLDrawableFactory.getFactory().createGLJPanel(caps);
+ drawable.setOpaque(false);
+ drawable.addGLEventListener(new GearRenderer());
- // Use debug pipeline
- // drawable.setGL(new DebugGL(drawable.getGL()));
- System.err.println("DRAWABLE GL IS: " + drawable.getGL().getClass().getName());
- System.err.println("DRAWABLE GLU IS: " + drawable.getGLU().getClass().getName());
+ JPanel gradientPanel = new JPanel() {
+ public void paintComponent(Graphics g) {
+ ((Graphics2D) g).setPaint(new GradientPaint(0, 0, Color.WHITE,
+ getWidth(), getHeight(), Color.DARK_GRAY));
+ g.fillRect(0, 0, getWidth(), getHeight());
+ }
+ };
+ gradientPanel.setLayout(new BorderLayout());
+ frame.getContentPane().add(gradientPanel, BorderLayout.CENTER);
+ gradientPanel.add(drawable, BorderLayout.CENTER);
+
+ final JCheckBox checkBox = new JCheckBox("Transparent", true);
+ checkBox.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ drawable.setOpaque(!checkBox.isSelected());
+ }
+ });
+ frame.getContentPane().add(checkBox, BorderLayout.SOUTH);
- drawable.addGLEventListener(new GearRenderer());
- frame.add(drawable);
frame.setSize(300, 300);
final Animator animator = new Animator(drawable);
frame.addWindowListener(new WindowAdapter() {
@@ -53,6 +71,9 @@ public class JGears {
public void init(GLDrawable drawable) {
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
System.err.println("INIT GL IS: " + gl.getClass().getName());
diff --git a/src/demos/jrefract/JRefract.java b/src/demos/jrefract/JRefract.java
index a2feafe..e842eba 100755
--- a/src/demos/jrefract/JRefract.java
+++ b/src/demos/jrefract/JRefract.java
@@ -42,6 +42,7 @@ import java.util.*;
import javax.imageio.*;
import javax.imageio.stream.*;
import javax.swing.*;
+import javax.swing.event.*;
import net.java.games.jogl.*;
import net.java.games.jogl.util.*;
@@ -63,42 +64,95 @@ import gleem.linalg.*;
public class JRefract {
private boolean useRegisterCombiners;
- private GLJPanel canvas;
- private Animator animator;
+ private ArrayList canvases;
+
private volatile boolean quit;
+ private volatile boolean animatorStopped;
+ private JDesktopPane desktop;
public static void main(String[] args) {
new JRefract().run(args);
}
- public void run(String[] args) {
-
- JFrame frame = new JFrame("JOGL and Swing Interoperability");
- JDesktopPane desktop = new JDesktopPane();
- desktop.setSize(1024, 768);
- JInternalFrame inner = new JInternalFrame("Refraction Using Vertex Programs");
+ private JInternalFrame addWindow(boolean bunny) {
+ String str = bunny ?
+ "Refraction Using Vertex Programs" :
+ "Gears Demo";
+ final JInternalFrame inner = new JInternalFrame(str);
inner.setResizable(true);
+ inner.setClosable(true);
+ inner.setVisible(true);
- canvas = GLDrawableFactory.getFactory().createGLJPanel(new GLCapabilities());
- canvas.addGLEventListener(new Listener());
- canvas.setSize(512, 512);
+ GLCapabilities caps = new GLCapabilities();
+ if (!bunny) {
+ caps.setAlphaBits(8);
+ }
+ final GLJPanel canvas = GLDrawableFactory.getFactory().createGLJPanel(caps);
+ if (bunny) {
+ canvas.addGLEventListener(new Listener());
+ } else {
+ canvas.addGLEventListener(new GearRenderer());
+ }
canvas.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
canvas.requestFocus();
}
});
+ addJPanel(canvas);
+
+ inner.addInternalFrameListener(new InternalFrameAdapter() {
+ public void internalFrameClosed(InternalFrameEvent e) {
+ removeJPanel(canvas);
+ System.gc();
+ }
+ });
+
inner.getContentPane().setLayout(new BorderLayout());
- inner.getContentPane().add(canvas, BorderLayout.CENTER);
- inner.getContentPane().add(new JButton("West"), BorderLayout.WEST);
- inner.getContentPane().add(new JButton("East"), BorderLayout.EAST);
- inner.getContentPane().add(new JButton("North"), BorderLayout.NORTH);
- inner.getContentPane().add(new JButton("South"), BorderLayout.SOUTH);
- inner.setSize(canvas.getSize());
+ if (bunny) {
+ inner.getContentPane().add(canvas, BorderLayout.CENTER);
+ inner.getContentPane().add(new JButton("West"), BorderLayout.WEST);
+ inner.getContentPane().add(new JButton("East"), BorderLayout.EAST);
+ inner.getContentPane().add(new JButton("North"), BorderLayout.NORTH);
+ inner.getContentPane().add(new JButton("South"), BorderLayout.SOUTH);
+ } else {
+ // Provide control over transparency of gears background
+ canvas.setOpaque(false);
+ JPanel gradientPanel = new JPanel() {
+ public void paintComponent(Graphics g) {
+ ((Graphics2D) g).setPaint(new GradientPaint(0, 0, Color.WHITE,
+ getWidth(), getHeight(), Color.DARK_GRAY));
+ g.fillRect(0, 0, getWidth(), getHeight());
+ }
+ };
+ gradientPanel.setLayout(new BorderLayout());
+ inner.getContentPane().add(gradientPanel, BorderLayout.CENTER);
+ gradientPanel.add(canvas, BorderLayout.CENTER);
+
+ final JCheckBox checkBox = new JCheckBox("Transparent", true);
+ checkBox.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ canvas.setOpaque(!checkBox.isSelected());
+ }
+ });
+ inner.getContentPane().add(checkBox, BorderLayout.SOUTH);
+ }
+
+ inner.setSize(512, 512);
+ desktop.add(inner);
+
+ return inner;
+ }
+
+ public void run(String[] args) {
+
+ canvases = new ArrayList();
+
+ JFrame frame = new JFrame("JOGL and Swing Interoperability");
+ desktop = new JDesktopPane();
+ desktop.setSize(1024, 768);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(desktop, BorderLayout.CENTER);
- desktop.add(inner);
- inner.setVisible(true);
JInternalFrame inner2 = new JInternalFrame("Hello, World");
JLabel label = new JLabel("Hello, World!");
@@ -109,7 +163,44 @@ public class JRefract {
desktop.add(inner2);
inner2.setVisible(true);
- animator = new Animator(canvas);
+ JMenuBar menuBar = new JMenuBar();
+
+ JMenu menu = new JMenu("Actions");
+ JMenuItem item = new JMenuItem("New bunny");
+ item.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ addWindow(true);
+ }
+ });
+ menu.add(item);
+
+ item = new JMenuItem("New gears");
+ item.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ addWindow(false);
+ }
+ });
+ menu.add(item);
+
+ item = new JMenuItem("Auto mode");
+ item.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ startAutoMode();
+ }
+ });
+ menu.add(item);
+
+ item = new JMenuItem("Exit");
+ item.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ runExit();
+ }
+ });
+ menu.add(item);
+
+ menuBar.add(menu);
+ frame.setJMenuBar(menuBar);
+
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
runExit();
@@ -117,7 +208,8 @@ public class JRefract {
});
frame.setSize(desktop.getSize());
frame.setVisible(true);
- animator.start();
+
+ new Thread(new ListAnimator()).start();
}
class Listener implements GLEventListener {
@@ -246,6 +338,9 @@ public class JRefract {
"END\n";
public void init(GLDrawable drawable) {
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
float cc = 1.0f;
@@ -539,7 +634,9 @@ public class JRefract {
for (int i = 0; i < suffixes.length; i++) {
String resourceName = baseName + "_" + suffixes[i] + ".png";
// Note: use of BufferedInputStream works around 4764639/4892246
- BufferedImage img = ImageIO.read(new BufferedInputStream(getClass().getClassLoader().getResourceAsStream(resourceName)));
+ BufferedInputStream bis = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream(resourceName));
+ BufferedImage img = ImageIO.read(bis);
+ bis.close();
if (img == null) {
throw new RuntimeException("Error reading PNG image " + resourceName);
}
@@ -548,36 +645,35 @@ public class JRefract {
}
private void makeRGBTexture(GL gl, GLU glu, BufferedImage img, int target, boolean mipmapped) {
- ByteBuffer dest = null;
switch (img.getType()) {
case BufferedImage.TYPE_3BYTE_BGR:
case BufferedImage.TYPE_CUSTOM: {
byte[] data = ((DataBufferByte) img.getRaster().getDataBuffer()).getData();
- dest = ByteBuffer.allocateDirect(data.length);
- dest.order(ByteOrder.nativeOrder());
- dest.put(data, 0, data.length);
+ if (mipmapped) {
+ glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
+ GL.GL_UNSIGNED_BYTE, data);
+ } else {
+ gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
+ GL.GL_RGB, GL.GL_UNSIGNED_BYTE, data);
+ }
break;
}
case BufferedImage.TYPE_INT_RGB: {
int[] data = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
- dest = ByteBuffer.allocateDirect(data.length * BufferUtils.SIZEOF_INT);
- dest.order(ByteOrder.nativeOrder());
- dest.asIntBuffer().put(data, 0, data.length);
+ if (mipmapped) {
+ glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
+ GL.GL_UNSIGNED_BYTE, data);
+ } else {
+ gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
+ GL.GL_RGB, GL.GL_UNSIGNED_BYTE, data);
+ }
break;
}
default:
throw new RuntimeException("Unsupported image type " + img.getType());
}
-
- if (mipmapped) {
- glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
- GL.GL_UNSIGNED_BYTE, dest);
- } else {
- gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
- GL.GL_RGB, GL.GL_UNSIGNED_BYTE, dest);
- }
}
private void initExtension(GL gl, String glExtensionName) {
@@ -765,7 +861,6 @@ public class JRefract {
}
private void runExit() {
- quit = true;
// Note: calling System.exit() synchronously inside the draw,
// reshape or init callbacks can lead to deadlocks on certain
// platforms (in particular, X11) because the JAWT's locking
@@ -773,9 +868,362 @@ public class JRefract {
// the exit routine in another thread.
new Thread(new Runnable() {
public void run() {
- animator.stop();
+ quit = true;
+ while (!animatorStopped) {
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ }
+ }
System.exit(0);
}
}).start();
}
+
+ private synchronized void addJPanel(GLJPanel panel) {
+ ArrayList newCanvases = (ArrayList) canvases.clone();
+ newCanvases.add(panel);
+ canvases = newCanvases;
+ }
+
+ private synchronized void removeJPanel(GLJPanel panel) {
+ ArrayList newCanvases = (ArrayList) canvases.clone();
+ newCanvases.remove(panel);
+ canvases = newCanvases;
+ }
+
+ class ListAnimator implements Runnable {
+ public void run() {
+ while (!quit) {
+ if (canvases.isEmpty()) {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ }
+ } else {
+ for (Iterator iter = canvases.iterator(); iter.hasNext(); ) {
+ GLJPanel panel = (GLJPanel) iter.next();
+ panel.display();
+ }
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ animatorStopped = true;
+ }
+ }
+
+ static class GearRenderer implements GLEventListener, MouseListener, MouseMotionListener {
+ private float view_rotx = 20.0f, view_roty = 30.0f, view_rotz = 0.0f;
+ private int gear1, gear2, gear3;
+ private float angle = 0.0f;
+
+ private int prevMouseX, prevMouseY;
+ private boolean mouseRButtonDown = false;
+
+
+ public void init(GLDrawable drawable) {
+ // Use debug pipeline
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
+ GL gl = drawable.getGL();
+ System.err.println("INIT GL IS: " + gl.getClass().getName());
+
+ float pos[] = { 5.0f, 5.0f, 10.0f, 0.0f };
+ float red[] = { 0.8f, 0.1f, 0.0f, 1.0f };
+ float green[] = { 0.0f, 0.8f, 0.2f, 1.0f };
+ float blue[] = { 0.2f, 0.2f, 1.0f, 1.0f };
+
+ gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos);
+ gl.glEnable(GL.GL_CULL_FACE);
+ gl.glEnable(GL.GL_LIGHTING);
+ gl.glEnable(GL.GL_LIGHT0);
+ gl.glEnable(GL.GL_DEPTH_TEST);
+
+ /* make the gears */
+ gear1 = gl.glGenLists(1);
+ gl.glNewList(gear1, GL.GL_COMPILE);
+ gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, red);
+ gear(gl, 1.0f, 4.0f, 1.0f, 20, 0.7f);
+ gl.glEndList();
+
+ gear2 = gl.glGenLists(1);
+ gl.glNewList(gear2, GL.GL_COMPILE);
+ gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, green);
+ gear(gl, 0.5f, 2.0f, 2.0f, 10, 0.7f);
+ gl.glEndList();
+
+ gear3 = gl.glGenLists(1);
+ gl.glNewList(gear3, GL.GL_COMPILE);
+ gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT_AND_DIFFUSE, blue);
+ gear(gl, 1.3f, 2.0f, 0.5f, 10, 0.7f);
+ gl.glEndList();
+
+ gl.glEnable(GL.GL_NORMALIZE);
+
+ drawable.addMouseListener(this);
+ drawable.addMouseMotionListener(this);
+ }
+
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {
+ GL gl = drawable.getGL();
+
+ float h = (float)height / (float)width;
+
+ gl.glMatrixMode(GL.GL_PROJECTION);
+
+ System.err.println("GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR));
+ System.err.println("GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER));
+ System.err.println("GL_VERSION: " + gl.glGetString(GL.GL_VERSION));
+ System.err.println();
+ System.err.println("glLoadTransposeMatrixfARB() supported: " +
+ gl.isFunctionAvailable("glLoadTransposeMatrixfARB"));
+ if (!gl.isFunctionAvailable("glLoadTransposeMatrixfARB")) {
+ // --- not using extensions
+ gl.glLoadIdentity();
+ } else {
+ // --- using extensions
+ final float[] identityTranspose = new float[] {
+ 1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1
+ };
+ gl.glLoadTransposeMatrixfARB(identityTranspose);
+ }
+ gl.glFrustum(-1.0f, 1.0f, -h, h, 5.0f, 60.0f);
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+ gl.glLoadIdentity();
+ gl.glTranslatef(0.0f, 0.0f, -40.0f);
+ }
+
+ public void display(GLDrawable drawable) {
+ angle += 2.0f;
+
+ GL gl = drawable.getGL();
+ gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
+
+ gl.glPushMatrix();
+ gl.glRotatef(view_rotx, 1.0f, 0.0f, 0.0f);
+ gl.glRotatef(view_roty, 0.0f, 1.0f, 0.0f);
+ gl.glRotatef(view_rotz, 0.0f, 0.0f, 1.0f);
+
+ gl.glPushMatrix();
+ gl.glTranslatef(-3.0f, -2.0f, 0.0f);
+ gl.glRotatef(angle, 0.0f, 0.0f, 1.0f);
+ gl.glCallList(gear1);
+ gl.glPopMatrix();
+
+ gl.glPushMatrix();
+ gl.glTranslatef(3.1f, -2.0f, 0.0f);
+ gl.glRotatef(-2.0f * angle - 9.0f, 0.0f, 0.0f, 1.0f);
+ gl.glCallList(gear2);
+ gl.glPopMatrix();
+
+ gl.glPushMatrix();
+ gl.glTranslatef(-3.1f, 4.2f, 0.0f);
+ gl.glRotatef(-2.0f * angle - 25.0f, 0.0f, 0.0f, 1.0f);
+ gl.glCallList(gear3);
+ gl.glPopMatrix();
+
+ gl.glPopMatrix();
+ }
+
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+
+ private void gear(GL gl,
+ float inner_radius,
+ float outer_radius,
+ float width,
+ int teeth,
+ float tooth_depth)
+ {
+ int i;
+ float r0, r1, r2;
+ float angle, da;
+ float u, v, len;
+
+ r0 = inner_radius;
+ r1 = outer_radius - tooth_depth / 2.0f;
+ r2 = outer_radius + tooth_depth / 2.0f;
+
+ da = 2.0f * (float) Math.PI / teeth / 4.0f;
+
+ gl.glShadeModel(GL.GL_FLAT);
+
+ gl.glNormal3f(0.0f, 0.0f, 1.0f);
+
+ /* draw front face */
+ gl.glBegin(GL.GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
+ if(i < teeth)
+ {
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f);
+ }
+ }
+ gl.glEnd();
+
+ /* draw front sides of teeth */
+ gl.glBegin(GL.GL_QUADS);
+ for (i = 0; i < teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + 2.0f * da), r2 * (float)Math.sin(angle + 2.0f * da), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3.0f * da), r1 * (float)Math.sin(angle + 3.0f * da), width * 0.5f);
+ }
+ gl.glEnd();
+
+ /* draw back face */
+ gl.glBegin(GL.GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
+ }
+ gl.glEnd();
+
+ /* draw back sides of teeth */
+ gl.glBegin(GL.GL_QUADS);
+ for (i = 0; i < teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
+ }
+ gl.glEnd();
+
+ /* draw outward faces of teeth */
+ gl.glBegin(GL.GL_QUAD_STRIP);
+ for (i = 0; i < teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle), r1 * (float)Math.sin(angle), -width * 0.5f);
+ u = r2 * (float)Math.cos(angle + da) - r1 * (float)Math.cos(angle);
+ v = r2 * (float)Math.sin(angle + da) - r1 * (float)Math.sin(angle);
+ len = (float)Math.sqrt(u * u + v * v);
+ u /= len;
+ v /= len;
+ gl.glNormal3f(v, -u, 0.0f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + da), r2 * (float)Math.sin(angle + da), -width * 0.5f);
+ gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), width * 0.5f);
+ gl.glVertex3f(r2 * (float)Math.cos(angle + 2 * da), r2 * (float)Math.sin(angle + 2 * da), -width * 0.5f);
+ u = r1 * (float)Math.cos(angle + 3 * da) - r2 * (float)Math.cos(angle + 2 * da);
+ v = r1 * (float)Math.sin(angle + 3 * da) - r2 * (float)Math.sin(angle + 2 * da);
+ gl.glNormal3f(v, -u, 0.0f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(angle + 3 * da), r1 * (float)Math.sin(angle + 3 * da), -width * 0.5f);
+ gl.glNormal3f((float)Math.cos(angle), (float)Math.sin(angle), 0.0f);
+ }
+ gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), width * 0.5f);
+ gl.glVertex3f(r1 * (float)Math.cos(0), r1 * (float)Math.sin(0), -width * 0.5f);
+ gl.glEnd();
+
+ gl.glShadeModel(GL.GL_SMOOTH);
+
+ /* draw inside radius cylinder */
+ gl.glBegin(GL.GL_QUAD_STRIP);
+ for (i = 0; i <= teeth; i++)
+ {
+ angle = i * 2.0f * (float) Math.PI / teeth;
+ gl.glNormal3f(-(float)Math.cos(angle), -(float)Math.sin(angle), 0.0f);
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), -width * 0.5f);
+ gl.glVertex3f(r0 * (float)Math.cos(angle), r0 * (float)Math.sin(angle), width * 0.5f);
+ }
+ gl.glEnd();
+ }
+
+ // Methods required for the implementation of MouseListener
+ public void mouseEntered(MouseEvent e) {}
+ public void mouseExited(MouseEvent e) {}
+
+ public void mousePressed(MouseEvent e) {
+ prevMouseX = e.getX();
+ prevMouseY = e.getY();
+ if ((e.getModifiers() & e.BUTTON3_MASK) != 0) {
+ mouseRButtonDown = true;
+ }
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ if ((e.getModifiers() & e.BUTTON3_MASK) != 0) {
+ mouseRButtonDown = false;
+ }
+ }
+
+ public void mouseClicked(MouseEvent e) {}
+
+ // Methods required for the implementation of MouseMotionListener
+ public void mouseDragged(MouseEvent e) {
+ int x = e.getX();
+ int y = e.getY();
+ Dimension size = e.getComponent().getSize();
+
+ float thetaY = 360.0f * ( (float)(x-prevMouseX)/(float)size.width);
+ float thetaX = 360.0f * ( (float)(prevMouseY-y)/(float)size.height);
+
+ prevMouseX = x;
+ prevMouseY = y;
+
+ view_rotx += thetaX;
+ view_roty += thetaY;
+ }
+
+ public void mouseMoved(MouseEvent e) {}
+ }
+
+ private JInternalFrame curFrame;
+ private void startAutoMode() {
+ new Thread(new Runnable() {
+ public void run() {
+ while (true) {
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ curFrame = addWindow(false);
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ }
+
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ curFrame.doDefaultCloseAction();
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ }).start();
+ }
}
diff --git a/src/demos/multisample/Multisample.java b/src/demos/multisample/Multisample.java
index a58d219..f479b0e 100755
--- a/src/demos/multisample/Multisample.java
+++ b/src/demos/multisample/Multisample.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java b/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java
index 9fa329d..d2a04af 100644
--- a/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java
+++ b/src/demos/proceduralTexturePhysics/ProceduralTexturePhysics.java
@@ -128,6 +128,7 @@ public class ProceduralTexturePhysics {
public void init(GLDrawable drawable) {
GL gl = drawable.getGL();
+ gl.setSwapInterval(1);
try {
checkExtension(gl, "GL_ARB_multitexture");
diff --git a/src/demos/tess/Tess.java b/src/demos/tess/Tess.java
index 354a0c9..ccbd7a6 100644
--- a/src/demos/tess/Tess.java
+++ b/src/demos/tess/Tess.java
@@ -101,14 +101,10 @@ public class Tess {
private int startList;
public void init(GLDrawable drawable) {
+ drawable.setGL(new DebugGL(drawable.getGL()));
+
gl = drawable.getGL();
glu = drawable.getGLU();
- // init() might get called more than once if the GLCanvas is
- // added and removed, but we only want to install the DebugGL
- // pipeline once
- if (!(drawable.getGL() instanceof DebugGL)) {
- drawable.setGL(new DebugGL(drawable.getGL()));
- }
double[][] rect = new double[][]{{50.0, 50.0, 0.0},
{200.0, 50.0, 0.0},
diff --git a/src/demos/testContextDestruction/TestContextDestruction.java b/src/demos/testContextDestruction/TestContextDestruction.java
index 2edff00..bfc0801 100755
--- a/src/demos/testContextDestruction/TestContextDestruction.java
+++ b/src/demos/testContextDestruction/TestContextDestruction.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
@@ -178,12 +178,7 @@ public class TestContextDestruction {
class Listener implements GLEventListener {
public void init(GLDrawable drawable) {
System.out.println("Listener.init()");
- // init() might get called more than once if the GLCanvas is
- // added and removed, but we only want to install the DebugGL
- // pipeline once
- if (!(drawable.getGL() instanceof DebugGL)) {
- drawable.setGL(new DebugGL(drawable.getGL()));
- }
+ drawable.setGL(new DebugGL(drawable.getGL()));
GL gl = drawable.getGL();
diff --git a/src/demos/testContextSharing/TestContextSharing.java b/src/demos/testContextSharing/TestContextSharing.java
index e50c4d0..569fa50 100644
--- a/src/demos/testContextSharing/TestContextSharing.java
+++ b/src/demos/testContextSharing/TestContextSharing.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
@@ -97,12 +97,7 @@ public class TestContextSharing {
class Listener implements GLEventListener {
public void init(GLDrawable drawable) {
- // init() might get called more than once if the GLCanvas is
- // added and removed, but we only want to install the DebugGL
- // pipeline once
- if (!(drawable.getGL() instanceof DebugGL)) {
- drawable.setGL(new DebugGL(drawable.getGL()));
- }
+ drawable.setGL(new DebugGL(drawable.getGL()));
GL gl = drawable.getGL();
diff --git a/src/demos/util/Bunny.java b/src/demos/util/Bunny.java
index 578dff0..fece8da 100644
--- a/src/demos/util/Bunny.java
+++ b/src/demos/util/Bunny.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/DDSReader.java b/src/demos/util/DDSReader.java
index 6355a65..ee3fc8c 100644
--- a/src/demos/util/DDSReader.java
+++ b/src/demos/util/DDSReader.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/DurationTimer.java b/src/demos/util/DurationTimer.java
index cd53fe1..c0f88e7 100644
--- a/src/demos/util/DurationTimer.java
+++ b/src/demos/util/DurationTimer.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/DxTex.java b/src/demos/util/DxTex.java
index 8e066f8..0948163 100644
--- a/src/demos/util/DxTex.java
+++ b/src/demos/util/DxTex.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/FloatList.java b/src/demos/util/FloatList.java
index 6a7f117..fe06e2e 100644
--- a/src/demos/util/FloatList.java
+++ b/src/demos/util/FloatList.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/IntList.java b/src/demos/util/IntList.java
index 9e48033..54a4745 100644
--- a/src/demos/util/IntList.java
+++ b/src/demos/util/IntList.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/LEDataInputStream.java b/src/demos/util/LEDataInputStream.java
index b391885..f2b2ba9 100644
--- a/src/demos/util/LEDataInputStream.java
+++ b/src/demos/util/LEDataInputStream.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/MD2.java b/src/demos/util/MD2.java
index d58b953..8e43c79 100644
--- a/src/demos/util/MD2.java
+++ b/src/demos/util/MD2.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/ObjReader.java b/src/demos/util/ObjReader.java
index 382a658..f8a6cec 100644
--- a/src/demos/util/ObjReader.java
+++ b/src/demos/util/ObjReader.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
@@ -68,8 +68,16 @@ public class ObjReader {
this(new File(filename));
}
+ public ObjReader(InputStream in) throws IOException {
+ this(new InputStreamReader(in));
+ }
+
public ObjReader(File file) throws IOException {
- BufferedReader reader = new BufferedReader(new FileReader(file));
+ this (new FileReader(file));
+ }
+
+ public ObjReader(Reader r) throws IOException {
+ BufferedReader reader = new BufferedReader(r);
String line = null;
int lineNo = 0;
float[] floatTmp = new float[3];
diff --git a/src/demos/util/SystemTime.java b/src/demos/util/SystemTime.java
index 1812f2a..b6a154b 100644
--- a/src/demos/util/SystemTime.java
+++ b/src/demos/util/SystemTime.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/TGAImage.java b/src/demos/util/TGAImage.java
index 187fb7a..24403eb 100644
--- a/src/demos/util/TGAImage.java
+++ b/src/demos/util/TGAImage.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/Time.java b/src/demos/util/Time.java
index ade74c4..f3ede1f 100644
--- a/src/demos/util/Time.java
+++ b/src/demos/util/Time.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/util/Triceratops.java b/src/demos/util/Triceratops.java
index dde452b..e013f79 100644
--- a/src/demos/util/Triceratops.java
+++ b/src/demos/util/Triceratops.java
@@ -20,7 +20,7 @@
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
* ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
diff --git a/src/demos/vertexArrayRange/VertexArrayRange.java b/src/demos/vertexArrayRange/VertexArrayRange.java
index 3534c64..5252f0e 100644
--- a/src/demos/vertexArrayRange/VertexArrayRange.java
+++ b/src/demos/vertexArrayRange/VertexArrayRange.java
@@ -219,8 +219,6 @@ public class VertexArrayRange {
setFlag('i', true); // infinite viewer and light
canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
- // canvas.setGL(new TraceGL(canvas.getGL(), System.err));
- // canvas.setGL(new DebugGL(canvas.getGL()));
VARListener listener = new VARListener();
canvas.addGLEventListener(listener);
@@ -280,17 +278,14 @@ public class VertexArrayRange {
boolean exiting = false;
public void init(GLDrawable drawable) {
+ // drawable.setGL(new TraceGL(drawable.getGL(), System.err));
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
// Try and disable synch-to-retrace for fastest framerate
- if (gl.isFunctionAvailable("wglSwapIntervalEXT")) {
- System.err.println("wglSwapIntervalEXT available; disabling sync-to-refresh for best framerate");
- gl.wglSwapIntervalEXT(0);
- }
- else {
- System.err.println("wglSwapIntervalEXT not available; cannot disable sync-to-refresh");
- }
+ gl.setSwapInterval(0);
try {
ensurePresent("glVertexArrayRangeNV");
diff --git a/src/demos/vertexBufferObject/VertexBufferObject.java b/src/demos/vertexBufferObject/VertexBufferObject.java
index 78e10a9..02bae92 100644
--- a/src/demos/vertexBufferObject/VertexBufferObject.java
+++ b/src/demos/vertexBufferObject/VertexBufferObject.java
@@ -214,8 +214,6 @@ public class VertexBufferObject {
setFlag('i', true); // infinite viewer and light
canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
- // canvas.setGL(new TraceGL(canvas.getGL(), System.err));
- // canvas.setGL(new DebugGL(canvas.getGL()));
VBOListener listener = new VBOListener();
canvas.addGLEventListener(listener);
@@ -274,6 +272,9 @@ public class VertexBufferObject {
boolean exiting = false;
public void init(GLDrawable drawable) {
+ // drawable.setGL(new TraceGL(drawable.getGL(), System.err));
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
diff --git a/src/demos/vertexProgRefract/VertexProgRefract.java b/src/demos/vertexProgRefract/VertexProgRefract.java
index 4039fad..e9c6905 100644
--- a/src/demos/vertexProgRefract/VertexProgRefract.java
+++ b/src/demos/vertexProgRefract/VertexProgRefract.java
@@ -514,37 +514,35 @@ public class VertexProgRefract {
}
private void makeRGBTexture(GL gl, GLU glu, BufferedImage img, int target, boolean mipmapped) {
- ByteBuffer dest = null;
-
switch (img.getType()) {
case BufferedImage.TYPE_3BYTE_BGR:
case BufferedImage.TYPE_CUSTOM: {
byte[] data = ((DataBufferByte) img.getRaster().getDataBuffer()).getData();
- dest = ByteBuffer.allocateDirect(data.length);
- dest.order(ByteOrder.nativeOrder());
- dest.put(data, 0, data.length);
+ if (mipmapped) {
+ glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
+ GL.GL_UNSIGNED_BYTE, data);
+ } else {
+ gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
+ GL.GL_RGB, GL.GL_UNSIGNED_BYTE, data);
+ }
break;
}
case BufferedImage.TYPE_INT_RGB: {
int[] data = ((DataBufferInt) img.getRaster().getDataBuffer()).getData();
- dest = ByteBuffer.allocateDirect(data.length * BufferUtils.SIZEOF_INT);
- dest.order(ByteOrder.nativeOrder());
- dest.asIntBuffer().put(data, 0, data.length);
+ if (mipmapped) {
+ glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
+ GL.GL_UNSIGNED_BYTE, data);
+ } else {
+ gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
+ GL.GL_RGB, GL.GL_UNSIGNED_BYTE, data);
+ }
break;
}
default:
throw new RuntimeException("Unsupported image type " + img.getType());
}
-
- if (mipmapped) {
- glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB,
- GL.GL_UNSIGNED_BYTE, dest);
- } else {
- gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0,
- GL.GL_RGB, GL.GL_UNSIGNED_BYTE, dest);
- }
}
private void initExtension(GL gl, String glExtensionName) {
diff --git a/www/index.html b/www/index.html
index 7ef3a4f..cb1b7b1 100644
--- a/www/index.html
+++ b/www/index.html
@@ -17,7 +17,7 @@
<AREA SHAPE="rect" ALT="Projects" COORDS="356,7,440,23" HREF="https://games.dev.java.net" TARGET="_self">
<AREA SHAPE="rect" ALT="Wiki" COORDS="643,7,695,23" HREF="http://wiki.java.net/bin/view/Games">
<AREA SHAPE="rect" ALT="Weblogs" COORDS="562,7,624,23" HREF="http://weblogs.java.net/weblogs/project/games">
- <AREA SHAPE="rect" COORDS="463,7,541,23" HREF="http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi" target="_top" ALT="Forums">
+ <AREA SHAPE="rect" COORDS="463,7,541,23" HREF="http://192.18.37.44/forums/index.php" target="_top" ALT="Forums">
<AREA SHAPE="rect" ALT="JavaGames Home" COORDS="147,7,334,23" HREF="http://community.java.net/games">
<AREA SHAPE="rect" ALT="Java.net" COORDS="21,7,128,23" HREF="http://www.java.net" TARGET="_self">
</MAP>
@@ -71,7 +71,7 @@ C or C++, in which case a link to the original sources is provided.<br>
is included in <a href="http://java.sun.com/j2se/1.4.2/">J2SE 1.4.2</a>;
click the images to launch the demos. Where there are no hardware or operating
system requirements listed, the demos run on any vendor's graphics card
-and on any of Solaris/SPARC, Linux/x86, Windows/x86, and Macintosh OS X 10.3.<br>
+and on any of Solaris/SPARC, Solaris/x86, Linux/x86, Windows/x86, and Macintosh OS X 10.3.<br>
</p>
@@ -335,6 +335,70 @@ documentation</a><br>
+ <div align="left"><font color="#ffffff"><strong>High Dynamic Range Rendering</strong></font></div>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" bgcolor="#ffffff">
+
+
+ <table border="0" cellpadding="5" cellspacing="1"
+ width="100%">
+ <tbody>
+ <tr>
+ <td width="25%"> <br>
+ </td>
+ <td width="45%"> <strong>Description</strong>
+ </td>
+ <td width="5%"><br>
+ </td>
+ <td width="25%"> <strong>Requirements</strong>
+ </td>
+ </tr>
+ <tr>
+ <td width="25%"> <a
+ href="https://jogl-demos.dev.java.net/webstart/HDR.jnlp">
+ <img src="hdr_sm.jpg" width="160" height="120"
+ alt="Launch High Dynamic Range Rendering demo">
+ </a> </td>
+ <td width="45%"> High Dynamic Range rendering demo utilizing 16-bit-per-channel floating-point pbuffers through NVidia, ATI or Apple extensions. Uses NVidia HILO or Apple or ATI floating point cubemaps. Intermediate results are rendered to floating-point pbuffers and tonemapped to 24-bit RGB before display. <a href="http://download.developer.nvidia.com/developer/SDK/Individual_Samples/DEMOS/OpenGL/hdr.zip">Original source code</a> supplied in NVidia's <a href="http://developer.nvidia.com/object/sdk_home.html">SDK</a>. This demo is known to work on Windows with suitable NVidia or ATI hardware, and on X11 platforms with suitable NVidia hardware (no floating-point pbuffer support is available on X11 from ATI as of this writing). The demo should run properly on Mac OS X soon pending some driver-level bug fixes.
+ </td>
+ <td width="5%"><br>
+ </td>
+ <td width="25%"> One of GL_NV_float_buffer, GL_ATI_texture_float, or GL_APPLE_float_pixels; ARB_multitexture; ARB_vertex_program; ARB_fragment_program</td>
+ </tr>
+ <tr>
+ </tr>
+
+
+ </tbody>
+
+ </table>
+ </td>
+ </tr>
+
+ </tbody>
+
+
+ </table>
+ </td>
+ </tr>
+
+ </tbody>
+</table>
+
+<table border="0" cellpadding="5" cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td>
+ <table bgcolor="#6E94B7" border="0" cellpadding="5"
+ cellspacing="1" width="100%">
+ <tbody>
+ <tr>
+ <td bgcolor="#6E94B7" valign="top">
+
+
+
<div align="left"><font color="#ffffff"><strong>Infinite Shadow
Volumes</strong></font></div>
</td>
diff --git a/www/webstart/GearsTmp.jnlp b/www/webstart/GearsTmp.jnlp
index 0d0b365..0a1cb17 100644
--- a/www/webstart/GearsTmp.jnlp
+++ b/www/webstart/GearsTmp.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="GearsTmp.jnlp">
<information>
<title>JOGL Gears Demo</title>
diff --git a/www/webstart/HWShadowmapsSimple.jnlp b/www/webstart/HWShadowmapsSimple.jnlp
index dc5befd..82e2db9 100644
--- a/www/webstart/HWShadowmapsSimple.jnlp
+++ b/www/webstart/HWShadowmapsSimple.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="HWShadowmapsSimple.jnlp">
<information>
<title>JOGL Hardware Shadow Maps Demo</title>
diff --git a/www/webstart/InfiniteShadowVolumes.jnlp b/www/webstart/InfiniteShadowVolumes.jnlp
index 2a910b0..279e93d 100644
--- a/www/webstart/InfiniteShadowVolumes.jnlp
+++ b/www/webstart/InfiniteShadowVolumes.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="InfiniteShadowVolumes.jnlp">
<information>
<title>JOGL Infinite Shadow Volumes Demo</title>
diff --git a/www/webstart/JRefract.jnlp b/www/webstart/JRefract.jnlp
index 11edcc8..4bf630c 100755
--- a/www/webstart/JRefract.jnlp
+++ b/www/webstart/JRefract.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="JRefract.jnlp">
<information>
<title>JOGL JRefract Demo</title>
diff --git a/www/webstart/JRefractSingleThreaded.jnlp b/www/webstart/JRefractSingleThreaded.jnlp
index c278249..8ddda85 100755
--- a/www/webstart/JRefractSingleThreaded.jnlp
+++ b/www/webstart/JRefractSingleThreaded.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="JRefractSingleThreaded.jnlp">
<information>
<title>JOGL JRefract Demo</title>
diff --git a/www/webstart/ProceduralTexturePhysics.jnlp b/www/webstart/ProceduralTexturePhysics.jnlp
index 3becd13..1dc3414 100644
--- a/www/webstart/ProceduralTexturePhysics.jnlp
+++ b/www/webstart/ProceduralTexturePhysics.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="ProceduralTexturePhysics.jnlp">
<information>
<title>JOGL Procedural Texture Physics Demo</title>
diff --git a/www/webstart/VertexArrayRange.jnlp b/www/webstart/VertexArrayRange.jnlp
index f31500b..cdc9071 100644
--- a/www/webstart/VertexArrayRange.jnlp
+++ b/www/webstart/VertexArrayRange.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="VertexArrayRange.jnlp">
<information>
<title>JOGL Vertex Array Range Demo</title>
diff --git a/www/webstart/VertexBufferObject.jnlp b/www/webstart/VertexBufferObject.jnlp
index a7e7244..9eeca55 100644
--- a/www/webstart/VertexBufferObject.jnlp
+++ b/www/webstart/VertexBufferObject.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="VertexBufferObject.jnlp">
<information>
<title>JOGL Vertex Buffer Object Demo</title>
diff --git a/www/webstart/VertexProgRefract.jnlp b/www/webstart/VertexProgRefract.jnlp
index b569345..3318643 100644
--- a/www/webstart/VertexProgRefract.jnlp
+++ b/www/webstart/VertexProgRefract.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="VertexProgRefract.jnlp">
<information>
<title>JOGL VertexProgRefract Demo</title>
diff --git a/www/webstart/VertexProgWarp.jnlp b/www/webstart/VertexProgWarp.jnlp
index 79d1a94..28f6e57 100644
--- a/www/webstart/VertexProgWarp.jnlp
+++ b/www/webstart/VertexProgWarp.jnlp
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<jnlp spec="1.0"
- codebase="https://jogl-demos.dev.java.net/webstart/"
+<jnlp codebase="https://jogl-demos.dev.java.net/webstart/"
href="VertexProgWarp.jnlp">
<information>
<title>JOGL VertexProgWarp Demo</title>
diff --git a/www/webstart/jogl-demos-data.jar b/www/webstart/jogl-demos-data.jar
index b139687..4edd570 100644
--- a/www/webstart/jogl-demos-data.jar
+++ b/www/webstart/jogl-demos-data.jar
Binary files differ
diff --git a/www/webstart/jogl-demos-util.jar b/www/webstart/jogl-demos-util.jar
index 79989a9..8b5891f 100644
--- a/www/webstart/jogl-demos-util.jar
+++ b/www/webstart/jogl-demos-util.jar
Binary files differ
diff --git a/www/webstart/jogl-demos.jar b/www/webstart/jogl-demos.jar
index 518fd11..cd5ae56 100644
--- a/www/webstart/jogl-demos.jar
+++ b/www/webstart/jogl-demos.jar
Binary files differ