Show Posts
|
|
Pages: [1]
|
|
1
|
Java Game APIs & Engines / JOGL Development / Re: (GL)JPanel w/o GLEventListener
|
on: 2008-10-20 13:45:11
|
Following test-code doesnt work: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| import java.awt.Dimension; import javax.media.opengl.*; import javax.swing.*; import com.sun.opengl.impl.Java2D;
public final class Window extends JFrame {
public Window() { super("Titel");
JPanel panel = new JPanel(null); panel.setPreferredSize(new Dimension(640, 480)); panel.setSize(640, 480); add(panel);
Java2D.invokeWithOGLContextCurrent(panel.getGraphics(), new Runnable() {
@Override public void run() { drawable = GLDrawableFactory.getFactory().createExternalGLDrawable();
context = GLDrawableFactory.getFactory().createExternalGLContext(); }
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setResizable(false); setVisible(true);
try { context.makeCurrent(); } catch (Exception e) { e.printStackTrace(); }
GL gl = context.getGL();
gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrtho(-4d / 3d, 4d / 3d, -1d, 1d, 0d, 1d);
gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); gl.glViewport(0, 0, 640, 480);
gl.glClear(GL.GL_COLOR_BUFFER_BIT); gl.glRectf(-.8f, -.8f, .8f, .8f);
gl.glFinish();
drawable.swapBuffers(); panel.repaint(); context.release(); }
private GLDrawable drawable; private GLContext context;
private static final long serialVersionUID = 0l;
public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() {new Window();} }); }
} |
Any ideas? Cheers, Chris
|
|
|
|
|
2
|
Java Game APIs & Engines / JOGL Development / (GL)JPanel w/o GLEventListener
|
on: 2008-10-19 11:53:22
|
|
Hello Javagaming-People,
is there a simple solution to connect OpenGL-Renderings to the JPanel Buffer? I dont want to use the GLEventListener/single-thread. I think of single-buffered OGL to double-buffered JPanel (if ogl to jpanel-(front/back)buffer-switch goes fast) or double-buffer OGL to single-buffered JPanel (if there are some advantages). Does anyone have experience with this.
I have read the sources (GLJPanel.java) but there seem to be many graca-vendor spec. "hacks" (sorry). So, before i do longtime-experiments, i ask here for some solutions (should be small & simple).
Eventually, the best aprroach is the combination of JPanel/BufferStrategy/direct OGL to JPanel-Buffer rendering?!
Thanks for your ideas! Cheers, Chris
PS: Sorry for my english...
|
|
|
|
|
4
|
Java Game APIs & Engines / JOGL Development / Output disappears after 1 second
|
on: 2008-10-01 13:37:12
|
Hello Javagaming-People, i have some problem with Jogl on my new Ubuntu 8.04 machine. If i start the App (Jogl, JFrame, GLEventListener) the output ist for a half second the correct picture and then it disappears and only a grey window is visible. If i toggle between maximize and normal window, the output is for a very short time shown and disappears again. Under Windows the same sourcecode acts as expected. Thanks for your help! Cheers, Chris 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| import javax.media.opengl.*; import javax.swing.JFrame;
public final class Main extends JFrame implements GLEventListener {
public Main() { GLCanvas canvas = new GLCanvas(); canvas.setSize(640, 480); canvas.addGLEventListener(this); add(canvas);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); }
@Override public void init(GLAutoDrawable drawable) { GL gl = drawable.getGL();
gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrtho(-4d / 3d, 4d / 3d, -1d, 1d, 0d, 2d);
gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); }
@Override public void display(GLAutoDrawable drawable) { GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glRectf(-.8f, -.8f, .8f, .8f); }
@Override public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
@Override public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}
private static final long serialVersionUID = 0l;
public static void main(String[] args) { new Main(); }
} |
|
|
|
|
|
|
Add your game by posting it in the WIP section,
or publish it in Showcase.
The first screenshot will be displayed as a thumbnail.
|
|