From e552d800ee9df3761108c044342612c8bda1f304 Mon Sep 17 00:00:00 2001 From: Kenneth Russel Date: Fri, 21 Jul 2006 22:34:00 +0000 Subject: Added support for sharing of textures, etc. between GLPbuffers and GLJPanels when the Java2D/JOGL bridge is active on Mac OS X. This required adding an alternate implementation for pbuffer drawables and contexts on OS X which uses CGL rather than the NextStep OpenGL APIs. Tested with advance Mustang bits on Mac OS X; Water and HWShadowmapsSimple demos (which use pbuffers) are now working within the JRefract harness when the Java2D/JOGL bridge is active. git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@855 232f8b59-042b-4e1e-8c03-345bb8c30851 --- .../impl/macosx/MacOSXPbufferGLDrawable.java | 98 ++++++++++++++++++++-- 1 file changed, 92 insertions(+), 6 deletions(-) (limited to 'src/classes/com/sun/opengl/impl/macosx/MacOSXPbufferGLDrawable.java') diff --git a/src/classes/com/sun/opengl/impl/macosx/MacOSXPbufferGLDrawable.java b/src/classes/com/sun/opengl/impl/macosx/MacOSXPbufferGLDrawable.java index a28d945f7..5a4967f5c 100644 --- a/src/classes/com/sun/opengl/impl/macosx/MacOSXPbufferGLDrawable.java +++ b/src/classes/com/sun/opengl/impl/macosx/MacOSXPbufferGLDrawable.java @@ -43,13 +43,15 @@ import javax.media.opengl.*; import com.sun.opengl.impl.*; public class MacOSXPbufferGLDrawable extends MacOSXGLDrawable { - private static final boolean DEBUG = Debug.debug("MacOSXPbufferGLContext"); + private static final boolean DEBUG = Debug.debug("MacOSXPbufferGLDrawable"); protected int initWidth; protected int initHeight; + // NSOpenGLPbuffer (for normal mode) + // CGLPbufferObj (for CGL_MODE situation, i.e., when Java2D/JOGL bridge is active) protected long pBuffer; - + protected int width; protected int height; @@ -61,7 +63,7 @@ public class MacOSXPbufferGLDrawable extends MacOSXGLDrawable { super(capabilities, null); this.initWidth = initialWidth; this.initHeight = initialHeight; - + initOpenGLImpl(); createPbuffer(); } @@ -71,7 +73,7 @@ public class MacOSXPbufferGLDrawable extends MacOSXGLDrawable { public void destroy() { if (this.pBuffer != 0) { - CGL.destroyPBuffer(0, pBuffer); + impl.destroy(pBuffer); this.pBuffer = 0; if (DEBUG) { @@ -135,13 +137,13 @@ public class MacOSXPbufferGLDrawable extends MacOSXGLDrawable { } } - pBuffer = CGL.createPBuffer(renderTarget, internalFormat, width, height); + pBuffer = impl.create(renderTarget, internalFormat, width, height); if (pBuffer == 0) { throw new GLException("pbuffer creation error: CGL.createPBuffer() failed"); } if (DEBUG) { - System.err.println("Created pbuffer 0x" + toHexString(pBuffer) + ", " + width + " x " + height + " for " + this); + System.err.println("Created pbuffer " + toHexString(pBuffer) + ", " + width + " x " + height + " for " + this); } } @@ -157,4 +159,88 @@ public class MacOSXPbufferGLDrawable extends MacOSXGLDrawable { } return (1<