package fr.blackpad.sample; import java.awt.Frame; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.logging.Logger; import javax.media.opengl.GL; import javax.media.opengl.GL2; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import javax.media.opengl.GLProfile; import javax.media.opengl.awt.GLCanvas; import com.jogamp.opengl.util.Animator; /** * Sample000 to demonstrate crash * */ public class Sample000 implements GLEventListener, MouseListener, MouseMotionListener, MouseWheelListener, KeyListener { private static final Logger logger = Logger.getLogger(Sample000.class.getName()); public long frame_count; public GLCanvas glcanvas; public GL2 gl; public static void main(String[] args) { new Sample000(); } public Sample000() { logger.info("[SAMPLE] Starting Demo Widgets"); logger.info("[SAMPLE] Using java version " + System.getProperty("java.version")); GLCapabilities caps = new GLCapabilities(GLProfile.getGL2ES1()); caps.setDoubleBuffered(true); caps.setHardwareAccelerated(true); logger.info("[SAMPLE] GL capabilities are " + caps.toString()); logger.info("[SAMPLE] Building frame"); Frame frame = new Frame("Blackpad Display Widgets Demo"); glcanvas = new GLCanvas(caps); frame.add(glcanvas); frame.setSize(640, 480); logger.info("[SAMPLE] Building animator"); final Animator animator = new Animator(glcanvas); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { // Run this on another thread than the AWT event queue to // make sure the call to Animator.stop() completes before // exiting new Thread(new Runnable() { public void run() { animator.stop(); System.exit(0); } } ).start(); } } ); frame.setVisible(true); animator.setRunAsFastAsPossible(false); animator.start(); logger.info("[SAMPLE] Setting listeners"); glcanvas.addGLEventListener(this); glcanvas.addMouseListener(this); //glcanvas.addMouseMotionListener(this); glcanvas.addMouseWheelListener(this); glcanvas.setFocusTraversalKeysEnabled(false); glcanvas.addKeyListener(this); frame.addKeyListener(this); glcanvas.setFocusable(true); frame_count = 0; } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void mouseWheelMoved(MouseWheelEvent _e) {} public void keyReleased(KeyEvent e) {} public void keyPressed(KeyEvent e) {} public void keyTyped(KeyEvent e) {} public void init(GLAutoDrawable drawable) { gl = drawable.getGL().getGL2(); logger.info("[SAMPLE] Initialising GL context"); int[] max_texel_units = new int[1]; logger.info("[SAMPLE] GL_VENDOR: " + gl.glGetString(GL.GL_VENDOR)); logger.info("[SAMPLE] GL_RENDERER: " + gl.glGetString(GL.GL_RENDERER)); logger.info("[SAMPLE] GL_VERSION: " + gl.glGetString(GL.GL_VERSION)); logger.info("[SAMPLE] GL_EXTENSIONS: " + gl.glGetString(GL.GL_EXTENSIONS)); gl.glGetIntegerv(GL2.GL_MAX_TEXTURE_UNITS, max_texel_units, 0); logger.info("[SAMPLE] GL_MAX_TEXTURE_UNITS : " + max_texel_units[0]); gl.setSwapInterval(1); gl.glClearColor(0.50f, 0.75f, 1.0f, 0.0f); gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL2.GL_FILL); gl.glEnable(GL2.GL_NORMALIZE); gl.glEnable(GL2.GL_TEXTURE_2D); } public void reshape(GLAutoDrawable _drawable, int x, int y, int _width, int _height) { // log logger.info("Entering reshape() ..."); } public void display(GLAutoDrawable _drawable) { // log logger.info("Entering display()..."); gl = _drawable.getGL().getGL2(); // increment frame count frame_count++; if(frame_count > 255) frame_count = 0; // paint background float ratio = ((float)frame_count)/256.0f; gl.glClearColor(ratio, 0, 0, 1.0f); gl.glClear(GL.GL_COLOR_BUFFER_BIT); } public void displayChanged(GLAutoDrawable _drawable, boolean _modeChanged, boolean _deviceChanged) { // log logger.info("Entering displayChanged() ..."); } public void dispose(GLAutoDrawable _drawable) { // log logger.info("Entering dispose() ..."); } }