aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
diff options
context:
space:
mode:
authorGerard Ziemski <[email protected]>2003-11-19 18:47:55 +0000
committerGerard Ziemski <[email protected]>2003-11-19 18:47:55 +0000
commit0f343197b80999930287b8043c9197a685437116 (patch)
treea0689efc66f766056a894ae8c6a95dab2b920ed8 /src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
parentbbe6acb715a9d6486d6bd257d78b3d6f6e240fad (diff)
implemented GLJPanel for Mac OS X
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@74 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java')
-rw-r--r--src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java55
1 files changed, 32 insertions, 23 deletions
diff --git a/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java b/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
index 70068ce63..5e2662b47 100644
--- a/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
+++ b/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
@@ -4,16 +4,20 @@ import net.java.games.jogl.*;
import net.java.games.jogl.impl.*;
public class MacOSXPbufferGLContext extends MacOSXGLContext {
+
private static final boolean DEBUG = false;
+
+ // see MacOSXWindowSystemInterface.m createPBuffer
+ private static final boolean USE_GL_TEXTURE_RECTANGLE_EXT = true;
- private int initWidth;
- private int initHeight;
+ protected int initWidth;
+ protected int initHeight;
private long pBuffer;
private int pBufferTextureName;
- private int width;
- private int height;
+ protected int width;
+ protected int height;
// FIXME: kept around because we create the OpenGL context lazily to
// better integrate with the MacOSXGLContext framework
@@ -23,10 +27,6 @@ public class MacOSXPbufferGLContext extends MacOSXGLContext {
super(null, capabilities, null, null);
this.initWidth = initialWidth;
this.initHeight = initialHeight;
- if (initWidth <= 0 || initHeight <= 0) {
- throw new GLException("Initial width and height of pbuffer must be positive (were (" +
- initWidth + ", " + initHeight + "))");
- }
}
public boolean canCreatePbufferContext() {
@@ -61,14 +61,35 @@ public class MacOSXPbufferGLContext extends MacOSXGLContext {
nsContextOfParent = parentContext;
- width = getNextPowerOf2(initWidth);
- height = getNextPowerOf2(initHeight);
-
+ if (USE_GL_TEXTURE_RECTANGLE_EXT)
+ {
+ // GL_TEXTURE_RECTANGLE_EXT
+ width = initWidth;
+ height = initHeight;
+ }
+ else
+ {
+ // GL_TEXTURE_2D
+ width = getNextPowerOf2(initWidth);
+ height = getNextPowerOf2(initHeight);
+ }
+
if (DEBUG) {
System.err.println("Created pbuffer " + width + " x " + height);
}
}
+ public void destroyPBuffer() {
+ if (this.pBuffer != 0) {
+ CGL.destroyPBuffer(nsContext, pBuffer);
+ }
+ this.pBuffer = 0;
+
+ if (DEBUG) {
+ System.err.println("Destroyed pbuffer " + width + " x " + height);
+ }
+ }
+
public void handleModeSwitch(long parentView, long parentContext) {
throw new GLException("Not yet implemented");
}
@@ -79,18 +100,6 @@ public class MacOSXPbufferGLContext extends MacOSXGLContext {
return false;
}
- public int getOffscreenContextBufferedImageType() {
- throw new GLException("Should not call this");
- }
-
- public int getOffscreenContextReadBuffer() {
- throw new GLException("Should not call this");
- }
-
- public boolean offscreenImageNeedsVerticalFlip() {
- throw new GLException("Should not call this");
- }
-
protected void swapBuffers() throws GLException {
// FIXME: do we need to do anything if the pbuffer is double-buffered?
}