From 3583101e586a6fe3306f84d4d34ee764596e0632 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 24 Jul 2001 12:07:18 +0000 Subject: optimized context switching --- gl4java/drawable/GLDrawable.java | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'gl4java/drawable/GLDrawable.java') diff --git a/gl4java/drawable/GLDrawable.java b/gl4java/drawable/GLDrawable.java index a0818c0..55c1311 100644 --- a/gl4java/drawable/GLDrawable.java +++ b/gl4java/drawable/GLDrawable.java @@ -30,6 +30,61 @@ public interface GLDrawable */ public GLContext getGLContext(); + /** + * + * This is the rendering-method called by + * e.g.: {@link gl4java.awt.GLCanvas#display} or by + * {@link gl4java.GLThread#run}. + * + *

+ * The default implementation of display() sends + * preDisplay, display and postDisplay events to + * all {@link gl4java.drawable.GLEventListener}s associated with this + * GLDrawable in the above order. + * + *

+ *

+        reset timer for frame duration
+
+     	for_all(gl4java.drawable.GLEventListener)
+		SEND preDisplay
+
+	if( gljMakeCurrent() )
+	{
+		for_all(gl4java.drawable.GLEventListener)
+			SEND display
+		gljSwap()
+		gljFree()
+
+		for_all(gl4java.drawable.GLEventListener)
+			SEND postDisplay
+	}
+
+        stop timer for frame duration
+     * 
+ * + *

+ * If you use the subclassing model (as opposed to the + * GLEventListener model), your subclass will redefine this to + * perform its OpenGL drawing. In this case you MUST encapsulate + * your OpenGL calls within: + *

+    	- glj.gljMakeCurrent()
+		YOUR OpenGL commands here !
+    	- glj.gljFree()
+     * 
+ * + * @return void + * + * @see gl4java.GLContext#gljMakeCurrent + * @see gl4java.GLContext#gljFree + * @see gl4java.GLContext#gljSwap + * @see gl4java.drawable.GLEventListener#preDisplay + * @see gl4java.drawable.GLEventListener#display + * @see gl4java.drawable.GLEventListener#postDisplay + */ + public void display(); + /** * the components listener's should be implemented also ! * since JDK 1.1 -- cgit v1.2.3