public void setDemo(String demo) { setTitle("Jogl Demo: " + demo); if (animator == null) { animator = new Animator(); animator.setIgnoreExceptions(true); } // stop(); if (drawable != null) { gradientPanel.remove(drawable); animator.remove(drawable); drawable = null; } if (demo.equals("gears")) { drawable = new JGears(); type = GEARS; } // else if(demo.equals("graphics")){ // type=GRAPHICS; // drawable=new JGLGraphics(); // } if (drawable != null) { gradientPanel.add(drawable, BorderLayout.CENTER); animator.add(drawable); } }
private void testImpl(GLProfile profile, GL3VAODemo.Mode[] modes) throws InterruptedException { final GLCapabilities capabilities = new GLCapabilities(profile); final GLWindow glWindow = GLWindow.create(capabilities); glWindow.setSize(512, 512); Animator anim = new Animator(glWindow); QuitAdapter quitAdapter = new QuitAdapter(); glWindow.addKeyListener(quitAdapter); glWindow.addWindowListener(quitAdapter); final GL3VAODemo vaoTest = new GL3VAODemo(modes); glWindow.addGLEventListener(vaoTest); glWindow.setVisible(true); anim.start(); final long t0 = System.currentTimeMillis(); long t1 = t0; while (!quitAdapter.shouldQuit() && t1 - t0 < duration) { Thread.sleep(100); t1 = System.currentTimeMillis(); } anim.stop(); glWindow.destroy(); }
@Test public void testWindowParenting02CreateVisibleDestroy3Odd() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Frame frame = new Frame("AWT Parent Frame"); Assert.assertNotNull(frame); frame.setSize(width, height); // visible test frame.setVisible(true); frame.add(newtCanvasAWT); Animator animator1 = new Animator(glWindow1); animator1.start(); while (animator1.isAnimating() && animator1.getDuration() < durationPerTest) { Thread.sleep(100); } Assert.assertEquals(true, animator1.isAnimating()); // !!! frame.dispose(); glWindow1.destroy(true); }
@Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate - 0"); super.onCreate(savedInstanceState); // create GLWindow (-> incl. underlying NEWT Display, Screen & Window) GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GLES1)); Log.d(TAG, "req caps: " + caps); GLWindow glWindow = GLWindow.create(caps); setContentView(getWindow(), glWindow); glWindow.addGLEventListener(new RedSquareES1(1)); glWindow .getWindow() .getScreen() .addScreenModeListener( new ScreenModeListener() { public void screenModeChangeNotify(ScreenMode sm) {} public void screenModeChanged(ScreenMode sm, boolean success) { System.err.println("ScreenMode Changed: " + sm); } }); glWindow.setVisible(true); Animator animator = new Animator(glWindow); animator.setUpdateFPSFrames(60, System.err); setAnimator(animator); Log.d(TAG, "onCreate - X"); }
@Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate - 0"); super.onCreate(savedInstanceState); // create GLWindow (-> incl. underlying NEWT Display, Screen & Window) GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GLES2)); Log.d(TAG, "req caps: " + caps); GLWindow glWindow = GLWindow.create(caps); glWindow.setFullscreen(true); setContentView(getWindow(), glWindow); glWindow.addGLEventListener(new ElektronenMultiplizierer()); glWindow .getScreen() .addMonitorModeListener( new MonitorModeListener() { @Override public void monitorModeChangeNotify(MonitorEvent me) {} @Override public void monitorModeChanged(MonitorEvent me, boolean success) { System.err.println("MonitorMode Changed (success " + success + "): " + me); } }); glWindow.setVisible(true); Animator animator = new Animator(glWindow); animator.setUpdateFPSFrames(60, System.err); animator.resetFPSCounter(); glWindow.resetFPSCounter(); Log.d(TAG, "onCreate - X"); }
/** * Start active rendering the example. * * <p>This should be called after the JFrame has been shown. */ public void start() { // initialize the last update time this.last = System.nanoTime(); // create an animator to animated the canvas Animator animator = new Animator(this.canvas); // run as fast as possible animator.setRunAsFastAsPossible(true); // start the animator animator.start(); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] urls0 = new String[] { System.getProperty("jnlp.media0_url2"), System.getProperty("jnlp.media0_url1"), System.getProperty("jnlp.media0_url0") }; final URLConnection urlConnection0 = getResource(urls0, 0); if (null == urlConnection0) { throw new RuntimeException("no media reachable: " + Arrays.asList(urls0)); } // also initializes JOGL final GLCapabilities capsMain = new GLCapabilities(GLProfile.getGL2ES2()); capsMain.setBackgroundOpaque(false); // screen for layout params .. final com.jogamp.newt.Display dpy = NewtFactory.createDisplay(null); final com.jogamp.newt.Screen scrn = NewtFactory.createScreen(dpy, 0); scrn.addReference(); try { final Animator animator = new Animator(); // Main final MovieCube demoMain = new MovieCube( urlConnection0, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.STREAM_ID_AUTO, -2.3f, 0f, 0f); final GLWindow glWindowMain = GLWindow.create(scrn, capsMain); glWindowMain.setFullscreen(true); setContentView(getWindow(), glWindowMain); glWindowMain.addMouseListener(showKeyboardMouseListener); glWindowMain.addGLEventListener(demoMain); animator.add(glWindowMain); glWindowMain.setVisible(true); // animator.setUpdateFPSFrames(60, System.err); animator.setUpdateFPSFrames(-1, null); animator.resetFPSCounter(); } catch (IOException e) { e.printStackTrace(); } scrn.removeReference(); Log.d(TAG, "onCreate - X"); }
public void destroy() { isValid = false; if (null != glAnimator) { glAnimator.stop(); glAnimator.remove(glWindow); glAnimator = null; } if (null != glWindow) { glWindow.destroy(); glWindow = null; } }
public final void init(GLAutoDrawable drawable) { try { GL gl = drawable.getGL(); this.setup(gl); Animator animator = new Animator(drawable); animator.start(); this._is_setup_done = true; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return; }
@Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { animator.remove(glWindow); glWindow.destroy(); } }
public static void main(String[] args) { Display display = NewtFactory.createDisplay(null); Screen screen = NewtFactory.createScreen(display, 0); GLProfile glProfile = GLProfile.get(GLProfile.GL3); GLCapabilities glCapabilities = new GLCapabilities(glProfile); glWindow = GLWindow.create(screen, glCapabilities); glWindow.setSize(1024, 768); glWindow.setPosition(50, 50); glWindow.setUndecorated(false); glWindow.setAlwaysOnTop(false); glWindow.setFullscreen(false); glWindow.setPointerVisible(true); glWindow.confinePointer(false); glWindow.setTitle("Hello Triangle"); glWindow.setVisible(true); HelloTriangle helloTriangle = new HelloTriangle(); glWindow.addGLEventListener(helloTriangle); glWindow.addKeyListener(helloTriangle); animator = new Animator(glWindow); animator.start(); }
public void start() throws IOException { canvas.addGLEventListener(new DrawPanel()); setSize(800,600); animator.start(); canvas.requestFocus(); }
public void start() { if (isValid) { glWindow.setVisible(true); glWindow.sendWindowEvent(WindowEvent.EVENT_WINDOW_RESIZED); glAnimator.start(); awtParent = glWindow.getParent(); } }
/** handle button events. */ public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if (cmd.equals("run")) { if (animator.isAnimating()) stop(); else start(); } else if (cmd.equals("transparancy")) { if (drawable != null) drawable.setOpaque(!checkBox.isSelected()); } }
public static void main(String[] args) { GLProfile glprofile = GLProfile.getDefault(); GLCapabilities glcapabilities = new GLCapabilities(glprofile); final GLCanvas glcanvas = new GLCanvas(glcapabilities); glcanvas.addGLEventListener(new ModelSnip()); glcanvas.setIgnoreRepaint(true); Animator anim = new Animator(glcanvas); anim.start(); JFrame jframe = new JFrame("Model GLEventListener"); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jframe.getContentPane().add(glcanvas, BorderLayout.CENTER); jframe.setSize(640, 480); jframe.setVisible(true); }
public static void main(String[] args) { final GLCanvas canvas = new GLCanvas(); final Frame frame = new Frame("Jogl Quad drawing"); final Animator animator = new Animator(canvas); canvas.addGLEventListener(new Test()); frame.add(canvas); frame.setSize(640, 480); frame.setResizable(false); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { animator.stop(); frame.dispose(); System.exit(0); } }); frame.setVisible(true); animator.start(); canvas.requestFocus(); }
public static void main(String[] args) { GLProfile glp = GLProfile.getGL2ES2(); GLCapabilities caps = new GLCapabilities(glp); caps.setAlphaBits(4); caps.setSampleBuffers(true); caps.setNumSamples(4); System.out.println("Requested: " + caps); final GLWindow window = GLWindow.create(caps); window.setPosition(10, 10); window.setSize(800, 400); window.setTitle("GPU UI Newt Demo 01"); RenderState rs = RenderState.createRenderState(new ShaderState(), SVertex.factory()); UIGLListener01 uiGLListener = new UIGLListener01(rs, DEBUG, TRACE); uiGLListener.attachInputListenerTo(window); window.addGLEventListener(uiGLListener); window.setUpdateFPSFrames(FPSCounter.DEFAULT_FRAMES_PER_INTERVAL, System.err); window.setVisible(true); final Animator animator = new Animator(); animator.setUpdateFPSFrames(FPSCounter.DEFAULT_FRAMES_PER_INTERVAL, System.err); animator.add(window); window.addKeyListener( new KeyAdapter() { public void keyPressed(KeyEvent arg0) { if (arg0.getKeyCode() == KeyEvent.VK_F4) { window.destroy(); } } }); window.addWindowListener( new WindowAdapter() { public void windowDestroyed(WindowEvent e) { animator.stop(); } }); animator.start(); }
protected void startGLCanvas() { if (frameRate > 0) { animator = new FPSAnimator(canvas, frameRate); } else { animator = new Animator(); animator.add(canvas); ((Animator) animator).setRunAsFastAsPossible(true); } animator.start(); wasAnimating = true; }
private void testImpl(final GLCapabilities caps, final GLEventListener glel) throws InterruptedException { final GLWindow glWindow = GLWindow.create(caps); Assert.assertNotNull(glWindow); glWindow.setSize(800, 600); glWindow.setVisible(true); glWindow.setTitle("JOGL Tessellation Shader Test"); Assert.assertTrue(glWindow.isNativeValid()); final QuitAdapter quitAdapter = new QuitAdapter(); glWindow.addKeyListener(quitAdapter); glWindow.addWindowListener(quitAdapter); glWindow.addGLEventListener(glel); final SnapshotGLEventListener snapshotGLEventListener = new SnapshotGLEventListener(); glWindow.addGLEventListener(snapshotGLEventListener); final Animator animator = new Animator(glWindow); animator.start(); animator.setUpdateFPSFrames(60, System.err); snapshotGLEventListener.setMakeSnapshot(); while (!quitAdapter.shouldQuit() && animator.isAnimating() && animator.getTotalFPSDuration() < duration) { Thread.sleep(100); } animator.stop(); glWindow.destroy(); }
protected void runTestGL(final GLCapabilities caps, final boolean forceFFPEmu) throws InterruptedException { final GLWindow glWindow = GLWindow.create(caps); Assert.assertNotNull(glWindow); glWindow.setTitle("Gears NEWT Test"); final GearsES1 demo = new GearsES1(swapInterval); demo.setForceFFPEmu(forceFFPEmu, forceFFPEmu, false, false); glWindow.addGLEventListener(demo); final SnapshotGLEventListener snap = new SnapshotGLEventListener(); glWindow.addGLEventListener(snap); final Animator animator = new Animator(glWindow); final QuitAdapter quitAdapter = new QuitAdapter(); // glWindow.addKeyListener(new TraceKeyAdapter(quitAdapter)); // glWindow.addWindowListener(new TraceWindowAdapter(quitAdapter)); glWindow.addKeyListener(quitAdapter); glWindow.addWindowListener(quitAdapter); final GLWindow f_glWindow = glWindow; glWindow.addKeyListener( new KeyAdapter() { public void keyReleased(final KeyEvent e) { if (!e.isPrintableKey() || e.isAutoRepeat()) { return; } if (e.getKeyChar() == 'f') { new Thread() { public void run() { f_glWindow.setFullscreen(!f_glWindow.isFullscreen()); } }.start(); } else if (e.getKeyChar() == 'd') { new Thread() { public void run() { f_glWindow.setUndecorated(!f_glWindow.isUndecorated()); } }.start(); } } }); glWindow.setSize(width, height); glWindow.setVisible(true); animator.setUpdateFPSFrames(1, null); animator.start(); snap.setMakeSnapshot(); while (!quitAdapter.shouldQuit() && animator.isAnimating() && animator.getTotalFPSDuration() < duration) { Thread.sleep(100); } animator.stop(); glWindow.destroy(); }
@Test public void testWindowParenting04ReparentNewtWin2TopLayouted() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Frame frame = new Frame("AWT Parent Frame"); frame.setLayout(new BorderLayout()); frame.add(new Button("North"), BorderLayout.NORTH); frame.add(new Button("South"), BorderLayout.SOUTH); frame.add(new Button("East"), BorderLayout.EAST); frame.add(new Button("West"), BorderLayout.WEST); frame.setSize(width, height); frame.setLocation(640, 480); frame.setVisible(true); frame.add(newtCanvasAWT, BorderLayout.CENTER); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); Animator animator1 = new Animator(glWindow1); animator1.start(); int state = 0; while (animator1.isAnimating() && animator1.getDuration() < 3 * durationPerTest) { Thread.sleep(durationPerTest); switch (state) { case 0: glWindow1.reparentWindow(null, null); Assert.assertEquals(true, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); break; case 1: glWindow1.reparentWindow(newtCanvasAWT.getNativeWindow(), null); Assert.assertEquals(true, glWindow1.isNativeWindowValid()); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); break; } state++; } animator1.stop(); Assert.assertEquals(false, animator1.isAnimating()); frame.dispose(); glWindow1.destroy(true); }
public AnimationPanel(GLEventListener renderer, AnimationTrigger trigger, Dimension dim) { super(new MigLayout("insets 0, nogrid, center, fill", "center", "center")); GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2)); _canvas = new GLCanvas(caps); _canvas.setName("glCanvas"); _canvas.setMinimumSize(new Dimension(5, 5)); setRenderer(renderer); if (trigger != null) { _defaultTrigger = null; _altTrigger = trigger; _altTrigger.setCanvas(_canvas); } else { _altTrigger = null; _defaultTrigger = new Animator(_canvas); _defaultTrigger.setPrintExceptions(true); } add(_canvas); setSize(dim); }
@Test public void compileShader() throws InterruptedException { GLProfile glp = GLProfile.get(GLProfile.GL2GL3); GLCapabilities caps = new GLCapabilities(glp); // commenting out this line makes it work caps.setStencilBits(8); // commenting in this line also makes it work // caps.setSampleBuffers(true); final Frame frame = new Frame("Bug 459 shader compilation test"); Assert.assertNotNull(frame); final GLCanvas glCanvas = new GLCanvas(caps); Assert.assertNotNull(glCanvas); frame.add(glCanvas); glCanvas.addGLEventListener( new GLEventListener() { /* @Override */ public void init(GLAutoDrawable drawable) { String code = "void main(void){gl_Position = vec4(0,0,0,1);}"; GL2GL3 gl = drawable.getGL().getGL2GL3(); int id = gl.glCreateShader(GL2GL3.GL_VERTEX_SHADER); try { gl.glShaderSource(id, 1, new String[] {code}, (int[]) null, 0); gl.glCompileShader(id); int[] compiled = new int[1]; gl.glGetShaderiv(id, GL2GL3.GL_COMPILE_STATUS, compiled, 0); if (compiled[0] == GL2GL3.GL_FALSE) { int[] logLength = new int[1]; gl.glGetShaderiv(id, GL2GL3.GL_INFO_LOG_LENGTH, logLength, 0); byte[] log = new byte[logLength[0]]; gl.glGetShaderInfoLog(id, logLength[0], (int[]) null, 0, log, 0); System.err.println("Error compiling the shader: " + new String(log)); gl.glDeleteShader(id); } else { System.out.println("Shader compiled: id=" + id); } } catch (GLException e) { glexception = e; } } /* @Override */ public void dispose(GLAutoDrawable drawable) {} /* @Override */ public void display(GLAutoDrawable drawable) {} /* @Override */ public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} }); Animator animator = new Animator(glCanvas); try { javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setSize(512, 512); frame.setVisible(true); } }); } catch (Exception ex) { throw new RuntimeException(ex); } animator.setUpdateFPSFrames(1, null); animator.start(); while (animator.isAnimating() && animator.getTotalFPSDuration() < duration) { Thread.sleep(100); } Assert.assertTrue(glexception != null ? glexception.getMessage() : "", glexception == null); Assert.assertNotNull(frame); Assert.assertNotNull(glCanvas); Assert.assertNotNull(animator); animator.stop(); Assert.assertEquals(false, animator.isAnimating()); try { javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setVisible(false); frame.remove(glCanvas); frame.dispose(); } }); } catch (Throwable throwable) { throwable.printStackTrace(); Assume.assumeNoException(throwable); } }
public void testImpl( final int sceneMSAASamples, final int graphMSAASamples, final int graphVBAASamples) throws InterruptedException { GLProfile glp = GLProfile.get(GLProfile.GL2ES2); GLCapabilities caps = new GLCapabilities(glp); caps.setAlphaBits(4); if (0 < sceneMSAASamples) { caps.setSampleBuffers(true); caps.setNumSamples(sceneMSAASamples); } System.err.println( "Requested: " + caps + ", graph[msaaSamples " + graphMSAASamples + ", vbaaSamples " + graphVBAASamples + "]"); GLWindow window = createWindow( "text-gvbaa" + graphVBAASamples + "-gmsaa" + graphMSAASamples + "-smsaa" + sceneMSAASamples, caps, 1024, 640); window.display(); System.err.println("Chosen: " + window.getChosenGLCapabilities()); if (WaitStartEnd) { UITestCase.waitForKey("Start"); } final RenderState rs = RenderState.createRenderState(SVertex.factory()); final int renderModes, sampleCount; if (graphVBAASamples > 0) { renderModes = Region.VBAA_RENDERING_BIT; sampleCount = graphVBAASamples; } else if (graphMSAASamples > 0) { renderModes = Region.MSAA_RENDERING_BIT; sampleCount = graphMSAASamples; } else { renderModes = 0; sampleCount = 0; } final TextRendererGLEL textGLListener = new TextRendererGLEL(rs, renderModes, sampleCount); System.err.println(textGLListener.getFontInfo()); window.addGLEventListener(textGLListener); Animator anim = new Animator(); anim.add(window); anim.start(); anim.setUpdateFPSFrames(60, null); sleep(); window.invoke( true, new GLRunnable() { @Override public boolean run(GLAutoDrawable drawable) { try { textGLListener.printScreen( renderModes, drawable, "./", "TestTextRendererNEWT00-snap" + screenshot_num, false); screenshot_num++; } catch (Exception e) { e.printStackTrace(); } return true; } }); anim.stop(); if (WaitStartEnd) { UITestCase.waitForKey("Stop"); } destroyWindow(window); }
@Test public void testWindowParenting01CreateVisibleDestroy1() throws InterruptedException { int x = 0; int y = 0; NEWTEventFiFo eventFifo = new NEWTEventFiFo(); GLWindow glWindow1 = GLWindow.create(glCaps); Assert.assertNotNull(glWindow1); Assert.assertEquals(false, glWindow1.isVisible()); Assert.assertEquals(false, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); glWindow1.setTitle("testWindowParenting01CreateVisibleDestroy"); GLEventListener demo1 = new RedSquare(); setDemoFields(demo1, glWindow1, false); glWindow1.addGLEventListener(demo1); NewtCanvasAWT newtCanvasAWT = new NewtCanvasAWT(glWindow1); Assert.assertNotNull(newtCanvasAWT); Assert.assertEquals(false, glWindow1.isVisible()); Assert.assertEquals(false, glWindow1.isNativeWindowValid()); Assert.assertNull(glWindow1.getParentNativeWindow()); Frame frame1 = new Frame("AWT Parent Frame"); frame1.setLayout(new BorderLayout()); frame1.add(new Button("North"), BorderLayout.NORTH); frame1.add(new Button("South"), BorderLayout.SOUTH); frame1.add(new Button("East"), BorderLayout.EAST); frame1.add(new Button("West"), BorderLayout.WEST); Container container1 = new Container(); container1.setLayout(new BorderLayout()); container1.add(new Button("north"), BorderLayout.NORTH); container1.add(new Button("south"), BorderLayout.SOUTH); container1.add(new Button("east"), BorderLayout.EAST); container1.add(new Button("west"), BorderLayout.WEST); container1.add(newtCanvasAWT, BorderLayout.CENTER); frame1.add(container1, BorderLayout.CENTER); frame1.setSize(width, height); // visible test frame1.setVisible(true); Assert.assertEquals(newtCanvasAWT.getNativeWindow(), glWindow1.getParentNativeWindow()); Animator animator1 = new Animator(glWindow1); animator1.start(); while (animator1.isAnimating() && animator1.getDuration() < durationPerTest) { Thread.sleep(100); } animator1.stop(); Assert.assertEquals(false, animator1.isAnimating()); frame1.setVisible(false); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.setVisible(true); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.remove(newtCanvasAWT); // Assert.assertNull(glWindow1.getParentNativeWindow()); Assert.assertEquals(false, glWindow1.isDestroyed()); frame1.dispose(); Assert.assertEquals(false, glWindow1.isDestroyed()); glWindow1.destroy(true); // Assert.assertEquals(true, glWindow1.isDestroyed()); }
public void stop() { runButton.setSelected(false); runButton.repaint(); animator.stop(); }
public void start() { runButton.setSelected(true); runButton.repaint(); animator.start(); }
/** Start processing animation events. */ public synchronized void start() { if (_defaultTrigger != null) _defaultTrigger.start(); else _altTrigger.start(); }
public void testImpl(boolean useFFP, final InputStream istream) throws InterruptedException, IOException { final GLReadBufferUtil screenshot = new GLReadBufferUtil(true, false); GLProfile glp; if (useFFP && GLProfile.isAvailable(GLProfile.GL2)) { glp = GLProfile.getMaxFixedFunc(true); } else if (!useFFP && GLProfile.isAvailable(GLProfile.GL2ES2)) { glp = GLProfile.getGL2ES2(); } else { System.err.println(getSimpleTestName(".") + ": GLProfile n/a, useFFP: " + useFFP); return; } final GLCapabilities caps = new GLCapabilities(glp); caps.setAlphaBits(1); final TextureData texData = TextureIO.newTextureData(glp, istream, false /* mipmap */, TextureIO.TGA); System.err.println("TextureData: " + texData); final GLWindow glad = GLWindow.create(caps); glad.setTitle("TestTGATextureGL2FromFileNEWT"); // Size OpenGL to Video Surface glad.setSize(texData.getWidth(), texData.getHeight()); // load texture from file inside current GL context to match the way // the bug submitter was doing it final GLEventListener gle = useFFP ? new TextureDraw01GL2Listener(texData) : new TextureDraw01ES2Listener(texData, 0); glad.addGLEventListener(gle); glad.addGLEventListener( new GLEventListener() { boolean shot = false; @Override public void init(GLAutoDrawable drawable) {} public void display(GLAutoDrawable drawable) { // 1 snapshot if (null != ((TextureDraw01Accessor) gle).getTexture() && !shot) { shot = true; snapshot(0, null, drawable.getGL(), screenshot, TextureIO.PNG, null); } } @Override public void dispose(GLAutoDrawable drawable) {} @Override public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {} }); Animator animator = new Animator(glad); animator.setUpdateFPSFrames(60, showFPS ? System.err : null); QuitAdapter quitAdapter = new QuitAdapter(); glad.addKeyListener(quitAdapter); glad.addWindowListener(quitAdapter); glad.setVisible(true); animator.start(); while (!quitAdapter.shouldQuit() && animator.isAnimating() && animator.getTotalFPSDuration() < duration) { Thread.sleep(100); } animator.stop(); glad.destroy(); }
@Override public void test( final GLCapabilitiesImmutable caps, final boolean useSwingDoubleBuffer, final boolean skipGLOrientationVerticalFlip) { if (skipGLOrientationVerticalFlip || useSwingDoubleBuffer) { return; // NOP } final AWTGLReadBufferUtil awtGLReadBufferUtil = new AWTGLReadBufferUtil(caps.getGLProfile(), false); final Frame frame = new Frame(); final Dimension d = new Dimension(320, 240); final GLCanvas glad = createGLCanvas(caps, d); final TextRendererGLEL textRendererGLEL = new TextRendererGLEL(); final SnapshotGLELAWT snapshotGLEL = doSnapshot ? new SnapshotGLELAWT(textRendererGLEL, awtGLReadBufferUtil) : null; try { javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setLocation(64, 64); frame.setLayout(new BorderLayout()); // final JPanel panel = new JPanel(); // panel.setLayout(new BorderLayout()); // panel.setDoubleBuffered(useSwingDoubleBuffer); // frame.getContentPane().add(panel); final GearsES2 gears = new GearsES2(1); gears.setVerbose(false); glad.addGLEventListener(gears); glad.addGLEventListener(textRendererGLEL); if (doSnapshot) { glad.addGLEventListener(snapshotGLEL); } // panel.add(glad); frame.add(glad, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } }); } catch (Throwable throwable) { throwable.printStackTrace(); Assume.assumeNoException(throwable); } glad.display(); // trigger initialization to get chosen-caps! final Dimension size0 = frame.getSize(); final Dimension size1 = new Dimension(size0.width + 100, size0.height + 100); final Dimension size2 = new Dimension(size0.width - 100, size0.height - 100); try { for (int i = 0; i < 3; i++) { final String str = "Frame# " + textRendererGLEL.frameNo + ", user #" + (i + 1); System.err.println(str); if (keyFrame) { waitForKey(str); } textRendererGLEL.userCounter = i + 1; glad.display(); } try { Thread.sleep(duration); } catch (InterruptedException e) { } javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setSize(size1); frame.validate(); } }); try { Thread.sleep(duration); } catch (InterruptedException e) { } javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setSize(size2); frame.validate(); } }); try { Thread.sleep(duration); } catch (InterruptedException e) { } javax.swing.SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.setSize(size0); frame.validate(); } }); try { Thread.sleep(duration); } catch (InterruptedException e) { } if (doSnapshot) { glad.disposeGLEventListener(snapshotGLEL, true /* remove */); } final Animator anim = new Animator(glad); anim.start(); try { Thread.sleep(2 * duration); } catch (InterruptedException e) { } anim.stop(); } catch (Exception e1) { e1.printStackTrace(); } try { SwingUtilities.invokeAndWait( new Runnable() { public void run() { frame.dispose(); } }); } catch (Exception e1) { e1.printStackTrace(); } }