aboutsummaryrefslogtreecommitdiffstats
path: root/demos/MiscDemos/SharedGLTest2.java
diff options
context:
space:
mode:
Diffstat (limited to 'demos/MiscDemos/SharedGLTest2.java')
-rwxr-xr-xdemos/MiscDemos/SharedGLTest2.java144
1 files changed, 144 insertions, 0 deletions
diff --git a/demos/MiscDemos/SharedGLTest2.java b/demos/MiscDemos/SharedGLTest2.java
new file mode 100755
index 0000000..e1dcb23
--- /dev/null
+++ b/demos/MiscDemos/SharedGLTest2.java
@@ -0,0 +1,144 @@
+import java.applet.*;
+import java.awt.*;
+import java.awt.event.*;
+import gl4java.*;
+import gl4java.awt.*;
+
+public class SharedGLTest2 extends Applet
+ implements MouseListener
+{
+
+ MyCanvas canvas = null;
+ Button addButton = null;
+ int canvasNumber = 0;
+ Panel pAllCvs = null;
+ Dimension d = null;
+
+ public void init()
+ {
+ d = getSize();
+ setLayout(new BorderLayout());
+ addButton = new Button ("add gl");
+ addButton.addMouseListener(this);
+ add("South", addButton);
+
+ pAllCvs = new Panel();
+ pAllCvs.setLayout(new GridLayout(4,1));
+ add("Center", pAllCvs);
+
+ canvas = new MyCanvas (d.width/2, d.height/2, null);
+ pAllCvs.add(canvas);
+ canvasNumber=1;
+ }
+
+ public static void main( String args[] )
+ {
+ Frame mainFrame = new Frame("SharedGLTest2");
+
+ SharedGLTest2 applet = new SharedGLTest2();
+
+ applet.setSize(400, 400);
+ applet.init();
+ applet.start();
+
+ mainFrame.add(applet);
+
+ mainFrame.pack();
+ mainFrame.setVisible(true);
+ }
+
+ public void start()
+ {
+ }
+
+
+ public void stop()
+ {
+ }
+
+ // Methods required for the implementation of MouseListener
+ public void mouseEntered( MouseEvent evt )
+ {
+ }
+
+ public void mouseExited( MouseEvent evt )
+ {
+ }
+
+ public void mousePressed( MouseEvent evt )
+ {
+ }
+
+ public void mouseReleased( MouseEvent evt )
+ {
+ }
+
+ public void mouseClicked( MouseEvent evt )
+ {
+ Component comp = evt.getComponent();
+
+ if( canvas!=null && comp.equals(addButton) )
+ {
+ if(canvasNumber<4)
+ {
+ MyCanvas _canvas =
+ new MyCanvas (d.width/2,d.height/2,canvas.getGLContext());
+ pAllCvs.add(_canvas);
+ canvasNumber++;
+ pAllCvs.invalidate();
+ pAllCvs.validate();
+ if(canvasNumber==4)
+ addButton.setEnabled(false);
+ }
+ }
+ }
+
+ private static int callList=0;
+
+ protected class MyCanvas extends GLCanvas
+ {
+ public MyCanvas(int w, int h, GLContext shareWith)
+ {
+ super(w, h);
+ sharedGLContext = shareWith;
+ }
+
+ public void init()
+ {
+ if(sharedGLContext==null && callList==0)
+ {
+ buildCallList(); // Really build something only once.
+ }
+ }
+
+ public void display()
+ {
+ if( glj.gljMakeCurrent() == false ) {
+ System.out.println("problem in use() method");
+ return;
+ }
+
+ if(callList!=0)
+ gl.glCallList(callList);
+
+ glj.gljSwap();
+ glj.gljCheckGL();
+ glj.gljFree();
+ }
+
+ /**
+ * Build only one call list for both GLCanvas.
+ */
+ protected void buildCallList()
+ {
+ callList = gl.glGenLists(1);
+
+ gl.glNewList(callList, gl.GL_COMPILE);
+ gl.glClearColor(1f, 0f, 0f, 1f);
+ gl.glClear(gl.GL_COLOR_BUFFER_BIT); // Clear the GLCanvas with red.
+ gl.glEndList();
+ }
+ }
+
+}
+