From bea9f9567ca5892813b308bf92eab96166248afe Mon Sep 17 00:00:00 2001
From: Kenneth Russel <kbrussel@alum.mit.edu>
Date: Fri, 20 May 2005 19:21:02 +0000
Subject: Added first-cut support for floating-point pbuffers on Mac OS X
 (untested)

git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@276 232f8b59-042b-4e1e-8c03-345bb8c30851
---
 .../games/jogl/impl/macosx/MacOSXPbufferGLContext.java     | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

(limited to 'src/net/java/games/jogl/impl/macosx')

diff --git a/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java b/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
index bc046bcc1..d374230d9 100644
--- a/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
+++ b/src/net/java/games/jogl/impl/macosx/MacOSXPbufferGLContext.java
@@ -64,8 +64,20 @@ public class MacOSXPbufferGLContext extends MacOSXGLContext {
       height = getNextPowerOf2(initHeight);
       renderTarget = GL.GL_TEXTURE_2D;
     }
+
+    int internalFormat = GL.GL_RGBA;
+    if (capabilities.getOffscreenFloatingPointBuffers()) {
+      if (!gl.isExtensionAvailable("GL_APPLE_float_pixels")) {
+	throw new GLException("Floating-point support (GL_APPLE_float_pixels) not available");
+      }
+      switch (capabilities.getRedBits()) {
+        case 16: internalFormat = GL.GL_RGBA_FLOAT16_APPLE; break;
+        case 32: internalFormat = GL.GL_RGBA_FLOAT32_APPLE; break;
+        default: throw new GLException("Invalid floating-point bit depth (only 16 and 32 supported)");
+      }
+    }
 		
-    pBuffer = CGL.createPBuffer(renderTarget, width, height);
+    pBuffer = CGL.createPBuffer(renderTarget, internalFormat, width, height);
     if (pBuffer == 0) {
       throw new GLException("pbuffer creation error: CGL.createPBuffer() failed");
     }
-- 
cgit v1.2.3