summaryrefslogtreecommitdiffstats
path: root/src/demos/texture
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2009-06-15 23:05:16 +0000
committerKenneth Russel <[email protected]>2009-06-15 23:05:16 +0000
commit935d2596c13371bb745d921dbcb9f05b0c11a010 (patch)
tree7fcc310618ae5a90edc734dc821e75afc0f080aa /src/demos/texture
parente2332d2f2908e68f1e77454c73f329f8ff2b400d (diff)
Deleted obsolete source code in preparation for copying JOGL_2_SANDBOX
on to trunk git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@351 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos/texture')
-rwxr-xr-xsrc/demos/texture/TestSubImage.java303
-rwxr-xr-xsrc/demos/texture/TestTexture.java204
-rwxr-xr-xsrc/demos/texture/TextureConvert.java94
3 files changed, 0 insertions, 601 deletions
diff --git a/src/demos/texture/TestSubImage.java b/src/demos/texture/TestSubImage.java
deleted file mode 100755
index b4e395e..0000000
--- a/src/demos/texture/TestSubImage.java
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * 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
- * 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
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package demos.texture;
-
-import java.awt.AlphaComposite;
-import java.awt.Color;
-import java.awt.GradientPaint;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Rectangle;
-import java.awt.event.*;
-import java.awt.image.*;
-import javax.swing.*;
-import java.util.*;
-
-import javax.media.opengl.*;
-import javax.media.opengl.glu.*;
-import com.sun.opengl.util.texture.*;
-
-/** Demonstrates and tests updates of sub-rectangles of a Texture
- generated from a BufferedImage. Draws a cursor in texel space
- around the cursor using Java 2D's XOR mode and pushes those
- updates to an underlying OpenGL texture using
- Texture.updateSubImage(). */
-
-public class TestSubImage {
- private boolean haveForcedImageType;
- private int forcedImageType;
- private List imageTypeMenuItems = new ArrayList();
- private GLU glu = new GLU();
- private GLCanvas mainCanvas;
- private Rectangle curRect;
- private Rectangle lastRect;
- private TextureData textureData;
- private Texture texture;
- private BufferedImage baseImage;
- private BufferedImage convertedImage;
- private int CURSOR_SIZE = 10;
-
- class Listener implements GLEventListener {
- public void init(GLAutoDrawable drawable) {}
-
- public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
- GL gl = drawable.getGL();
- gl.glMatrixMode(GL.GL_PROJECTION);
- gl.glLoadIdentity();
- glu.gluOrtho2D(0, 1, 0, 1);
- gl.glMatrixMode(GL.GL_MODELVIEW);
- gl.glLoadIdentity();
- }
-
- public void display(GLAutoDrawable drawable) {
- GL gl = drawable.getGL();
- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
-
- if (convertedImage == null) {
- // Get rid of any previously allocated texture
- if (texture != null) {
- texture.dispose();
- texture = null;
- }
-
- // Convert the base image
- // Note that for simplicity in handling of the XOR cursor, we
- // always make a copy of the base image
- int imageType = BufferedImage.TYPE_INT_RGB;
- if (haveForcedImageType) {
- imageType = forcedImageType;
- }
- convertedImage = new BufferedImage(baseImage.getWidth(),
- baseImage.getHeight(),
- imageType);
- Graphics2D g = convertedImage.createGraphics();
- g.setComposite(AlphaComposite.Src);
- g.drawImage(baseImage, 0, 0, null);
- g.dispose();
-
- // Create a TextureData and Texture from it
- textureData = TextureIO.newTextureData(convertedImage, false);
- texture = TextureIO.newTexture(textureData);
- }
-
- Graphics2D g = convertedImage.createGraphics();
- g.setColor(Color.RED);
- g.setXORMode(Color.WHITE);
- if (lastRect != null) {
- // Paint with XOR in this area
- g.fillRect(lastRect.x, lastRect.y, lastRect.width, lastRect.height);
- }
- if (curRect != null) {
- // Paint with XOR in this area
- g.fillRect(curRect.x, curRect.y, curRect.width, curRect.height);
- }
- // Compute the union of these rectangles, if any
- Rectangle union = null;
- if (lastRect != null) {
- union = new Rectangle(lastRect);
- if (curRect != null) {
- union.add(curRect);
- }
- } else if (curRect != null) {
- union = curRect;
- }
-
- // Move these down
- lastRect = curRect;
- curRect = null;
-
- // Update the affected area of the texture (if there is one)
- // Note: this one API call is basically what this demo is illustrating
- if (union != null) {
- int yOrigin = union.y;
-
- // Note: if the Y origin of the texture data didn't match Java
- // 2D's Y origin, we would need to correct the Y coordinate
- // passed down here. This code path is not taken in the
- // current Texture implementation.
- if (!texture.getMustFlipVertically()) {
- yOrigin = texture.getHeight() - yOrigin;
- }
-
- texture.updateSubImage(textureData, 0,
- union.x, yOrigin,
- union.x, yOrigin,
- union.width, union.height);
- }
-
- // Now draw one quad with the texture
- texture.enable();
- texture.bind();
- gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
- TextureCoords coords = texture.getImageTexCoords();
- gl.glBegin(GL.GL_QUADS);
- gl.glTexCoord2f(coords.left(), coords.bottom());
- gl.glVertex3f(0, 0, 0);
- gl.glTexCoord2f(coords.right(), coords.bottom());
- gl.glVertex3f(1, 0, 0);
- gl.glTexCoord2f(coords.right(), coords.top());
- gl.glVertex3f(1, 1, 0);
- gl.glTexCoord2f(coords.left(), coords.top());
- gl.glVertex3f(0, 1, 0);
- gl.glEnd();
- texture.disable();
- }
-
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
- }
-
- private JMenuItem newItem(final int imageType, String imageTypeName) {
- final JCheckBoxMenuItem item = new JCheckBoxMenuItem(imageTypeName);
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (item.isSelected()) {
- // Disable all other checkbox menu items
- for (Iterator iter = imageTypeMenuItems.iterator(); iter.hasNext(); ) {
- JCheckBoxMenuItem cb = (JCheckBoxMenuItem) iter.next();
- if (cb != item)
- cb.setSelected(false);
- }
-
- haveForcedImageType = true;
- forcedImageType = imageType;
- } else {
- // No longer have a forced image type
- haveForcedImageType = false;
- }
-
- // Get rid of the previously created converted image, if any
- if (convertedImage != null) {
- convertedImage.flush();
- convertedImage = null;
- }
-
- lastRect = null;
- mainCanvas.repaint();
- }
- });
- imageTypeMenuItems.add(item);
- return item;
- }
-
- private void run() {
- JPopupMenu.setDefaultLightWeightPopupEnabled(false);
-
- // Create top-level window and menus
- JFrame frame = new JFrame("Texture Sub Image Test");
- JMenuBar menuBar = new JMenuBar();
- JMenu menu = new JMenu("File");
- menu.setMnemonic(KeyEvent.VK_F);
- JMenuItem item = new JMenuItem("Quit");
- item.setMnemonic(KeyEvent.VK_Q);
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- });
- menu.add(item);
-
- menuBar.add(menu);
-
- menu = new JMenu("Tools");
- menu.setMnemonic(KeyEvent.VK_T);
- JMenu submenu = new JMenu("Force BufferedImage Type");
- submenu.setMnemonic(KeyEvent.VK_F);
- submenu.add(newItem(BufferedImage.TYPE_3BYTE_BGR, "TYPE_3BYTE_BGR"));
- submenu.add(newItem(BufferedImage.TYPE_4BYTE_ABGR, "TYPE_4BYTE_ABGR"));
- submenu.add(newItem(BufferedImage.TYPE_4BYTE_ABGR_PRE, "TYPE_4BYTE_ABGR_PRE"));
- submenu.add(newItem(BufferedImage.TYPE_BYTE_BINARY, "TYPE_BYTE_BINARY"));
- submenu.add(newItem(BufferedImage.TYPE_BYTE_GRAY, "TYPE_BYTE_GRAY"));
- submenu.add(newItem(BufferedImage.TYPE_BYTE_INDEXED, "TYPE_BYTE_INDEXED"));
- submenu.add(newItem(BufferedImage.TYPE_INT_ARGB, "TYPE_INT_ARGB"));
- submenu.add(newItem(BufferedImage.TYPE_INT_ARGB_PRE, "TYPE_INT_ARGB_PRE"));
- submenu.add(newItem(BufferedImage.TYPE_INT_BGR, "TYPE_INT_BGR"));
- submenu.add(newItem(BufferedImage.TYPE_INT_RGB, "TYPE_INT_RGB"));
- submenu.add(newItem(BufferedImage.TYPE_USHORT_555_RGB, "TYPE_USHORT_555_RGB"));
- submenu.add(newItem(BufferedImage.TYPE_USHORT_565_RGB, "TYPE_USHORT_565_RGB"));
- submenu.add(newItem(BufferedImage.TYPE_USHORT_GRAY, "TYPE_USHORT_GRAY"));
- menu.add(submenu);
-
- menuBar.add(menu);
-
- frame.setJMenuBar(menuBar);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- // Set up the base image we'll use to draw with
- baseImage = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB);
- Graphics2D g = baseImage.createGraphics();
- g.setPaint(new GradientPaint(0, 0, Color.CYAN,
- baseImage.getWidth(), baseImage.getHeight(), Color.BLUE));
- g.fillRect(0, 0, baseImage.getWidth(), baseImage.getHeight());
- g.dispose();
-
- // Now set up the main GLCanvas
- mainCanvas = new GLCanvas();
- mainCanvas.addGLEventListener(new Listener());
- mainCanvas.addMouseListener(new MouseAdapter() {
- public void mouseExited(MouseEvent e) {
- curRect = null;
- mainCanvas.repaint();
- }
- });
- mainCanvas.addMouseMotionListener(new MouseMotionAdapter() {
- public void mouseMoved(MouseEvent e) {
- // Scale x and y into coordinate system of texture
- int x = (int) (e.getX() * (float) baseImage.getWidth() / (float) e.getComponent().getWidth());
- int y = (int) (e.getY() * (float) baseImage.getHeight() / (float) e.getComponent().getHeight());
- // Paint cursor on texture around this point
- int minx = Math.max(0, x - CURSOR_SIZE);
- int maxx = Math.min(baseImage.getWidth(), x + CURSOR_SIZE);
- int miny = Math.max(0, y - CURSOR_SIZE);
- int maxy = Math.min(baseImage.getHeight(), y + CURSOR_SIZE);
- curRect = new Rectangle(minx, miny, maxx - minx, maxy - miny);
- mainCanvas.repaint();
- }
- });
-
- frame.getContentPane().add(mainCanvas);
- frame.setSize(512, 512);
- frame.setVisible(true);
- }
-
- public static void main(String[] args) {
- new TestSubImage().run();
- }
-}
diff --git a/src/demos/texture/TestTexture.java b/src/demos/texture/TestTexture.java
deleted file mode 100755
index ff0ff14..0000000
--- a/src/demos/texture/TestTexture.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * 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
- * 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
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package demos.texture;
-
-import java.awt.geom.*;
-import java.awt.event.*;
-import java.io.*;
-import javax.swing.*;
-
-import javax.media.opengl.*;
-import javax.media.opengl.glu.*;
-import com.sun.opengl.util.texture.*;
-
-/** Demonstrates simple use of the TextureIO texture loader. */
-
-public class TestTexture implements GLEventListener {
- public static void main(String[] args) {
- new TestTexture().run(args);
- }
-
- private File curDir;
-
- private void run(String[] args) {
- JPopupMenu.setDefaultLightWeightPopupEnabled(false);
-
- JFrame frame = new JFrame("Texture Loader Demo");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- final GLCanvas canvas = new GLCanvas();
-
- JMenuBar menuBar = new JMenuBar();
- JMenu menu = new JMenu("File");
- JMenuItem item = new JMenuItem("Open texture...");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(curDir);
- int res = chooser.showOpenDialog(null);
- if (res == JFileChooser.APPROVE_OPTION) {
- File chosen = chooser.getSelectedFile();
- if (chosen != null) {
- curDir = chosen.getParentFile();
- setTextureFile(chosen);
- canvas.repaint();
- }
- }
- }
- });
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
- menu.add(item);
-
- item = new JMenuItem("Flush texture");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- flushTexture();
- canvas.repaint();
- }
- });
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
- menu.add(item);
-
- item = new JMenuItem("Exit");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- });
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
- menu.add(item);
-
- menuBar.add(menu);
-
- canvas.addGLEventListener(this);
- frame.getContentPane().add(canvas);
- frame.setJMenuBar(menuBar);
- frame.setSize(800, 600);
- frame.show();
- }
-
- private boolean newTexture;
- private boolean flushTexture;
- private File file;
- private Texture texture;
- private GLU glu = new GLU();
-
- public void setTextureFile(File file) {
- this.file = file;
- newTexture = true;
- }
-
- public void flushTexture() {
- flushTexture = true;
- }
-
- public void init(GLAutoDrawable drawable) {
- drawable.setGL(new DebugGL(drawable.getGL()));
-
- GL gl = drawable.getGL();
- gl.glClearColor(0, 0, 0, 0);
- gl.glEnable(GL.GL_DEPTH_TEST);
- }
-
- public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
- GL gl = drawable.getGL();
- gl.glMatrixMode(GL.GL_PROJECTION);
- gl.glLoadIdentity();
- glu.gluOrtho2D(0, 1, 0, 1);
- gl.glMatrixMode(GL.GL_MODELVIEW);
- gl.glLoadIdentity();
- }
-
- public void display(GLAutoDrawable drawable) {
- GL gl = drawable.getGL();
- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
-
- if (flushTexture) {
- flushTexture = false;
- if (texture != null) {
- texture.dispose();
- texture = null;
- }
- }
-
- if (newTexture) {
- newTexture = false;
-
- if (texture != null) {
- texture.dispose();
- texture = null;
- }
-
- try {
- System.err.println("Loading texture...");
- texture = TextureIO.newTexture(file, true);
- System.err.println("Texture estimated memory size = " + texture.getEstimatedMemorySize());
- } catch (IOException e) {
- e.printStackTrace();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- e.printStackTrace(new PrintStream(bos));
- JOptionPane.showMessageDialog(null,
- bos.toString(),
- "Error loading texture",
- JOptionPane.ERROR_MESSAGE);
- return;
- }
- }
-
- if (texture != null) {
- texture.enable();
- texture.bind();
- gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
- TextureCoords coords = texture.getImageTexCoords();
-
- gl.glBegin(GL.GL_QUADS);
- gl.glTexCoord2f(coords.left(), coords.bottom());
- gl.glVertex3f(0, 0, 0);
- gl.glTexCoord2f(coords.right(), coords.bottom());
- gl.glVertex3f(1, 0, 0);
- gl.glTexCoord2f(coords.right(), coords.top());
- gl.glVertex3f(1, 1, 0);
- gl.glTexCoord2f(coords.left(), coords.top());
- gl.glVertex3f(0, 1, 0);
- gl.glEnd();
- texture.disable();
- }
- }
-
- public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
-}
diff --git a/src/demos/texture/TextureConvert.java b/src/demos/texture/TextureConvert.java
deleted file mode 100755
index 728aa9c..0000000
--- a/src/demos/texture/TextureConvert.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * 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
- * 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
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package demos.texture;
-
-import java.io.*;
-
-import javax.media.opengl.*;
-import javax.media.opengl.glu.*;
-import com.sun.opengl.util.*;
-import com.sun.opengl.util.texture.*;
-
-/** Demonstrates how the TextureIO subsystem may be used to convert
- textures between multiple file formats, including texture
- compression where available. */
-
-public class TextureConvert {
- public static void main(String[] args) throws IOException {
- if (args.length != 2) {
- System.out.println("Usage: java demos.texture.TextureConvert [input file] [output file]");
- System.out.println("Converts texture from input file format to output file format.");
- System.out.println("If output file format is DDS, compresses texture with DXT3 compression");
- System.out.println("if available.");
- System.exit(1);
- }
-
- String inputFile = args[0];
- String outputFile = args[1];
-
- // Make a pbuffer to get an offscreen context
- if (!GLDrawableFactory.getFactory().canCreateGLPbuffer()) {
- System.out.println("Pbuffer support not available (required to run this demo)");
- System.exit(1);
- }
- GLCapabilities caps = new GLCapabilities();
- caps.setDoubleBuffered(false);
- GLPbuffer pbuffer = GLDrawableFactory.getFactory().createGLPbuffer(caps, null, 2, 2, null);
- pbuffer.getContext().makeCurrent();
- GL gl = pbuffer.getGL();
-
- boolean attemptCompression = false;
- if (TextureIO.DDS.equals(FileUtil.getFileSuffix(outputFile))) {
- if (gl.isExtensionAvailable("GL_EXT_texture_compression_s3tc") ||
- gl.isExtensionAvailable("GL_NV_texture_compression_vtc")) {
- attemptCompression = true;
- }
- }
-
- TextureData inputData = TextureIO.newTextureData(new File(inputFile), false, null);
- if (attemptCompression && !inputData.isDataCompressed()) {
- inputData.setInternalFormat(GL.GL_COMPRESSED_RGBA_S3TC_DXT3_EXT);
- }
- Texture tex = TextureIO.newTexture(inputData);
-
- // Now read it back and save to the output file
- TextureIO.write(tex, new File(outputFile));
- }
-}