|
From: <sp...@us...> - 2011-09-03 18:52:53
|
Revision: 3632
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3632&view=rev
Author: spasi
Date: 2011-09-03 18:52:45 +0000 (Sat, 03 Sep 2011)
Log Message:
-----------
Added support for OpenGL 3.2 on MacOS X 10.7+.
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java
trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java
trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java
trunk/LWJGL/src/java/org/lwjgl/opengl/DisplayImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableGL.java
trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableLWJGL.java
trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxContextAttribs.java
trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplayPeerInfo.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPbufferPeerInfo.java
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPeerInfo.java
trunk/LWJGL/src/java/org/lwjgl/opengl/Pbuffer.java
trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java
trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsContextAttribs.java
trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java
trunk/LWJGL/src/native/macosx/context.h
trunk/LWJGL/src/native/macosx/context.m
trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXContextImplementation.m
trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXPeerInfo.m
Removed Paths:
-------------
trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextAttribs.java
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/AWTCanvasImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -47,7 +47,7 @@
/**
* Return an opaque handle to the canvas peer information required to create a context from it.
*/
- PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format) throws LWJGLException;
+ PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException;
/**
* Find a proper GraphicsConfiguration from the given GraphicsDevice and PixelFormat.
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/AWTGLCanvas.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -107,7 +107,7 @@
}
}
- public void setPixelFormat(final PixelFormatLWJGL pf) throws LWJGLException {
+ public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
throw new UnsupportedOperationException();
}
@@ -311,7 +311,7 @@
return;
try {
if ( peer_info == null ) {
- this.peer_info = implementation.createPeerInfo(this, pixel_format);
+ this.peer_info = implementation.createPeerInfo(this, pixel_format, attribs);
}
peer_info.lockAndGetHandle();
try {
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -51,6 +51,10 @@
* If the forwardCompatible
* attribute is used, LWJGL will not load the deprecated functionality (as defined in the OpenGL 3.0 specification). This
* means that developers can start working on cleaning up their applications without an OpenGL 3.0 complaint driver.
+ * <p/>
+ * This extension is not supported on MacOS X. However, in order to enable the GL 3.2 context on MacOS X 10.7 or newer, an
+ * instance of this class must be passed to LWJGL. The only valid configuration is <code>new ContextAttribs(3, 2).withProfileCore()</code>,
+ * anything else will be ignored.
*
* @author spasi <sp...@us...>
*/
@@ -243,14 +247,15 @@
return new LinuxContextAttribs();
case LWJGLUtil.PLATFORM_WINDOWS:
return new WindowsContextAttribs();
- case LWJGLUtil.PLATFORM_MACOSX:
- return new MacOSXContextAttribs();
default:
throw new IllegalStateException("Unsupported platform");
}
}
IntBuffer getAttribList() {
+ if ( LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX )
+ return null;
+
ContextAttribsImplementation implementation = getImplementation();
int attribCount = 0;
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -93,10 +93,10 @@
* unlike GL, where it is typically at the bottom of the display.
*/
private static int y = -1;
-
+
/** the width of the Display window */
private static int width = 0;
-
+
/** the height of the Display window */
private static int height = 0;
@@ -115,9 +115,9 @@
private static boolean window_created;
private static boolean parent_resized;
-
+
private static boolean window_resized;
-
+
private static boolean window_resizable;
/** Initial Background Color of Display */
@@ -305,7 +305,7 @@
DisplayMode mode = getEffectiveMode();
display_impl.createWindow(drawable, mode, tmp_parent, getWindowX(), getWindowY());
window_created = true;
-
+
width = Display.getDisplayMode().getWidth();
height = Display.getDisplayMode().getHeight();
@@ -674,9 +674,9 @@
throw new RuntimeException(e);
}
}
-
+
window_resized = !isFullscreen() && parent == null && display_impl.wasResized();
-
+
if ( window_resized ) {
width = display_impl.getWidth();
height = display_impl.getHeight();
@@ -894,7 +894,7 @@
Display.drawable = drawable;
try {
- drawable.setPixelFormat(pixel_format);
+ drawable.setPixelFormat(pixel_format, attribs);
try {
createWindow();
try {
@@ -1008,6 +1008,11 @@
switchDisplayMode();
final DrawableGLES drawable = new DrawableGLES() {
+
+ public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
+ throw new UnsupportedOperationException();
+ }
+
public void destroy() {
synchronized ( GlobalLock.lock ) {
if ( !isCreated() )
@@ -1269,11 +1274,11 @@
}
}
}
-
+
/**
* Enable or disable the Display window to be resized.
*
- * @param set true to make the Display window resizable;
+ * @param resizable set to true to make the Display window resizable;
* false to disable resizing on the Display window.
*/
public static void setResizable(boolean resizable) {
@@ -1282,65 +1287,65 @@
display_impl.setResizable(resizable);
}
}
-
+
/**
* @return true if the Display window is resizable.
*/
public static boolean isResizable() {
return window_resizable;
}
-
+
/**
* @return true if the Display window has been resized.
* This value will be updated after a call to Display.update().
- *
+ *
* This will return false if running in fullscreen or with Display.setParent(Canvas parent)
*/
public static boolean wasResized() {
return window_resized;
}
-
+
/**
* @return this method will return the width of the Display window.
- *
+ *
* If running in fullscreen mode it will return the width of the current set DisplayMode.
* If running Display.setParent(Canvas parent) is being used, the width of the parent
* will be returned.
- *
+ *
* This value will be updated after a call to Display.update().
*/
public static int getWidth() {
-
+
if (Display.isFullscreen()) {
return Display.getDisplayMode().getWidth();
}
-
+
if (parent != null) {
return parent.getWidth();
}
-
+
return width;
}
-
+
/**
* @return this method will return the height of the Display window.
- *
+ *
* If running in fullscreen mode it will return the height of the current set DisplayMode.
* If running Display.setParent(Canvas parent) is being used, the height of the parent
* will be returned.
- *
+ *
* This value will be updated after a call to Display.update().
*/
public static int getHeight() {
-
+
if (Display.isFullscreen()) {
return Display.getDisplayMode().getHeight();
- }
-
+ }
+
if (parent != null) {
return parent.getHeight();
}
-
+
return height;
}
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/DisplayImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/DisplayImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/DisplayImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -108,7 +108,7 @@
* Create the native PeerInfo.
* @throws LWJGLException
*/
- PeerInfo createPeerInfo(PixelFormat pixel_format) throws LWJGLException;
+ PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException;
// void destroyPeerInfo();
@@ -136,7 +136,7 @@
/**
* Method to create a Pbuffer
*/
- PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format,
+ PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
IntBuffer pixelFormatCaps,
IntBuffer pBufferAttribs) throws LWJGLException;
@@ -159,25 +159,25 @@
* @return number of icons used.
*/
int setIcon(ByteBuffer[] icons);
-
+
/**
* Enable or disable the Display window to be resized.
*
- * @param set true to make the Display window resizable;
+ * @param resizable set to true to make the Display window resizable;
* false to disable resizing on the Display window.
*/
void setResizable(boolean resizable);
-
+
/**
* @return true if the Display window has been resized since this method was last called.
*/
boolean wasResized();
-
+
/**
* @return this method will return a the width of the Display window.
*/
int getWidth();
-
+
/**
* @return this method will return a the height of the Display window.
*/
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableGL.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableGL.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableGL.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -53,8 +53,12 @@
}
public void setPixelFormat(final PixelFormatLWJGL pf) throws LWJGLException {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
this.pixel_format = (PixelFormat)pf;
- this.peer_info = Display.getImplementation().createPeerInfo(pixel_format);
+ this.peer_info = Display.getImplementation().createPeerInfo(pixel_format, attribs);
}
public PixelFormatLWJGL getPixelFormat() {
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableLWJGL.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableLWJGL.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/DrawableLWJGL.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -42,6 +42,8 @@
void setPixelFormat(PixelFormatLWJGL pf) throws LWJGLException;
+ void setPixelFormat(PixelFormatLWJGL pf, ContextAttribs attribs) throws LWJGLException;
+
PixelFormatLWJGL getPixelFormat();
/**
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxCanvasImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -76,7 +76,7 @@
}
}
- public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
return new LinuxAWTGLCanvasPeerInfo(component);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxContextAttribs.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxContextAttribs.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxContextAttribs.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -33,8 +33,6 @@
/**
* An implementation of ContextAttribs using GLX_create_context.
- * <p/><p/>
- * ---- WIP - GLX_create_context has not been defined yet ----
*
* @author spasi <sp...@us...>
*/
@@ -42,14 +40,13 @@
private static final int GLX_CONTEXT_MAJOR_VERSION_ARB = 0x2091;
private static final int GLX_CONTEXT_MINOR_VERSION_ARB = 0x2092;
- private static final int GLX_CONTEXT_LAYER_PLANE_ARB = 0x2093;
- private static final int GLX_CONTEXT_FLAGS_ARB = 0x2094;
- private static final int GLX_CONTEXT_PROFILE_MASK_ARB = 0x9126;
+ private static final int GLX_CONTEXT_FLAGS_ARB = 0x2094;
+ private static final int GLX_CONTEXT_PROFILE_MASK_ARB = 0x9126;
- private static final int GLX_CONTEXT_DEBUG_BIT_ARB = 0x0001;
+ private static final int GLX_CONTEXT_DEBUG_BIT_ARB = 0x0001;
private static final int GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x0002;
- private static final int GLX_CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
+ private static final int GLX_CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
private static final int GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
LinuxContextAttribs() {
@@ -64,7 +61,7 @@
}
public int getLayerPlaneAttrib() {
- return GLX_CONTEXT_LAYER_PLANE_ARB;
+ throw new UnsupportedOperationException();
}
public int getFlagsAttrib() {
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -516,7 +516,7 @@
private static long getHandle(Canvas parent) throws LWJGLException {
AWTCanvasImplementation awt_impl = AWTGLCanvas.createImplementation();
- LinuxPeerInfo parent_peer_info = (LinuxPeerInfo)awt_impl.createPeerInfo(parent, null);
+ LinuxPeerInfo parent_peer_info = (LinuxPeerInfo)awt_impl.createPeerInfo(parent, null, null);
ByteBuffer parent_peer_info_handle = parent_peer_info.lockAndGetHandle();
try {
return parent_peer_info.getDrawable();
@@ -757,7 +757,7 @@
return result;
}
- public PeerInfo createPeerInfo(PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
peer_info = new LinuxDisplayPeerInfo(pixel_format);
return peer_info;
}
@@ -1243,7 +1243,7 @@
return false;
}
- public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format,
+ public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
IntBuffer pixelFormatCaps,
IntBuffer pBufferAttribs) throws LWJGLException {
return new LinuxPbufferPeerInfo(width, height, pixel_format);
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXAWTGLCanvasPeerInfo.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -44,8 +44,8 @@
final class MacOSXAWTGLCanvasPeerInfo extends MacOSXCanvasPeerInfo {
private final Canvas component;
- MacOSXAWTGLCanvasPeerInfo(Canvas component, PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
- super(pixel_format, support_pbuffer);
+ MacOSXAWTGLCanvasPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
+ super(pixel_format, attribs, support_pbuffer);
this.component = component;
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -44,11 +44,11 @@
* $Id$
*/
final class MacOSXCanvasImplementation implements AWTCanvasImplementation {
- public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
try {
- return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, true);
+ return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, attribs, true);
} catch (LWJGLException e) {
- return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, false);
+ return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, attribs, false);
}
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasPeerInfo.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -45,8 +45,8 @@
abstract class MacOSXCanvasPeerInfo extends MacOSXPeerInfo {
private final AWTSurfaceLock awt_surface = new AWTSurfaceLock();
- protected MacOSXCanvasPeerInfo(PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
- super(pixel_format, true, true, support_pbuffer, true);
+ protected MacOSXCanvasPeerInfo(PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
+ super(pixel_format, attribs, true, true, support_pbuffer, true);
}
protected void initHandle(Canvas component) throws LWJGLException {
Deleted: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextAttribs.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextAttribs.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextAttribs.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2002-2008 LWJGL Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package org.lwjgl.opengl;
-
-/**
- * An implementation of ContextAttribs for MacOS X.
- * <p/><p/>
- * ---- WIP - No XGL_create_context has been defined for MacOS X yet ----
- *
- * @author spasi <sp...@us...>
- */
-final class MacOSXContextAttribs implements ContextAttribsImplementation {
-
- private static final int XGL_CONTEXT_MAJOR_VERSION_ARB = 0x2091;
- private static final int XGL_CONTEXT_MINOR_VERSION_ARB = 0x2092;
- private static final int XGL_CONTEXT_LAYER_PLANE_ARB = 0x2093;
- private static final int XGL_CONTEXT_FLAGS_ARB = 0x2094;
- private static final int XGL_CONTEXT_PROFILE_MASK_ARB = 0x9126;
-
- private static final int XGL_CONTEXT_DEBUG_BIT_ARB = 0x0001;
- private static final int XGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x0002;
-
- private static final int XGL_CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
- private static final int XGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
-
- MacOSXContextAttribs() {
- }
-
- public int getMajorVersionAttrib() {
- return XGL_CONTEXT_MAJOR_VERSION_ARB;
- }
-
- public int getMinorVersionAttrib() {
- return XGL_CONTEXT_MINOR_VERSION_ARB;
- }
-
- public int getLayerPlaneAttrib() {
- return XGL_CONTEXT_LAYER_PLANE_ARB;
- }
-
- public int getFlagsAttrib() {
- return XGL_CONTEXT_FLAGS_ARB;
- }
-
- public int getDebugBit() {
- return XGL_CONTEXT_DEBUG_BIT_ARB;
- }
-
- public int getForwardCompatibleBit() {
- return XGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB;
- }
-
- public int getProfileMaskAttrib() {
- return XGL_CONTEXT_PROFILE_MASK_ARB;
- }
-
- public int getProfileCoreBit() {
- return XGL_CONTEXT_CORE_PROFILE_BIT_ARB;
- }
-
- public int getProfileCompatibilityBit() {
- return XGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB;
- }
-
-}
\ No newline at end of file
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXContextImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -46,13 +46,13 @@
public ByteBuffer create(PeerInfo peer_info, IntBuffer attribs, ByteBuffer shared_context_handle) throws LWJGLException {
ByteBuffer peer_handle = peer_info.lockAndGetHandle();
try {
- return nCreate(peer_handle, attribs, shared_context_handle);
+ return nCreate(peer_handle, shared_context_handle);
} finally {
peer_info.unlock();
}
}
- private static native ByteBuffer nCreate(ByteBuffer peer_handle, IntBuffer attribs, ByteBuffer shared_context_handle) throws LWJGLException;
+ private static native ByteBuffer nCreate(ByteBuffer peer_handle, ByteBuffer shared_context_handle) throws LWJGLException;
public void swapBuffers() throws LWJGLException {
ContextGL current_context = ContextGL.getCurrentContext();
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -240,11 +240,11 @@
return frame != null && frame.getCanvas().syncIsDirty();
}
- public PeerInfo createPeerInfo(PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
try {
- return new MacOSXDisplayPeerInfo(pixel_format, true);
+ return new MacOSXDisplayPeerInfo(pixel_format, attribs, true);
} catch (LWJGLException e) {
- return new MacOSXDisplayPeerInfo(pixel_format, false);
+ return new MacOSXDisplayPeerInfo(pixel_format, attribs, false);
}
}
@@ -434,10 +434,10 @@
return false;
}
- public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format,
+ public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
IntBuffer pixelFormatCaps,
IntBuffer pBufferAttribs) throws LWJGLException {
- return new MacOSXPbufferPeerInfo(width, height, pixel_format);
+ return new MacOSXPbufferPeerInfo(width, height, pixel_format, attribs);
}
public void setPbufferAttrib(PeerInfo handle, int attrib, int value) {
@@ -507,13 +507,13 @@
public boolean isInsideWindow() {
return true;
}
-
+
public void setResizable(boolean resizable) {
frame.setResizable(resizable);
}
-
+
public boolean wasResized() {
return canvas_listener.wasResized();
}
-
+
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplayPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplayPeerInfo.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplayPeerInfo.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -44,8 +44,8 @@
final class MacOSXDisplayPeerInfo extends MacOSXCanvasPeerInfo {
private boolean locked;
- MacOSXDisplayPeerInfo(PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
- super(pixel_format, support_pbuffer);
+ MacOSXDisplayPeerInfo(PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
+ super(pixel_format, attribs, support_pbuffer);
}
protected void doLockAndInitHandle() throws LWJGLException {
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPbufferPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPbufferPeerInfo.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPbufferPeerInfo.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -42,8 +42,8 @@
* $Id$
*/
final class MacOSXPbufferPeerInfo extends MacOSXPeerInfo {
- MacOSXPbufferPeerInfo(int width, int height, PixelFormat pixel_format) throws LWJGLException {
- super(pixel_format, false, false, true, false);
+ MacOSXPbufferPeerInfo(int width, int height, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
+ super(pixel_format, attribs, false, false, true, false);
nCreate(getHandle(), width, height);
}
private static native void nCreate(ByteBuffer handle, int width, int height) throws LWJGLException;
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPeerInfo.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPeerInfo.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXPeerInfo.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -43,18 +43,23 @@
* $Id$
*/
abstract class MacOSXPeerInfo extends PeerInfo {
- MacOSXPeerInfo(PixelFormat pixel_format, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException {
+ MacOSXPeerInfo(PixelFormat pixel_format, ContextAttribs attribs, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException {
super(createHandle());
if (pixel_format.isFloatingPoint() && !LWJGLUtil.isMacOSXEqualsOrBetterThan(10, 4))
- throw new LWJGLException("Floating point pixel format requested, but is not supported");
- choosePixelFormat(pixel_format, use_display_bpp, support_window, support_pbuffer, double_buffered);
+ throw new LWJGLException("Floating point pixel format requested, but it requires MacOS X 10.4 or newer");
+
+ boolean gl32 = attribs.getMajorVersion() == 3 && attribs.getMinorVersion() == 2 && attribs.isProfileCore();
+ if ( gl32 && !LWJGLUtil.isMacOSXEqualsOrBetterThan(10, 7) )
+ throw new LWJGLException("OpenGL 3.2 requested, but it requires MacOS X 10.7 or newer");
+
+ choosePixelFormat(pixel_format, gl32, use_display_bpp, support_window, support_pbuffer, double_buffered);
}
private static native ByteBuffer createHandle();
- private void choosePixelFormat(PixelFormat pixel_format, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException {
- nChoosePixelFormat(getHandle(), pixel_format, use_display_bpp, support_window, support_pbuffer, double_buffered);
+ private void choosePixelFormat(PixelFormat pixel_format, boolean gl32, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException {
+ nChoosePixelFormat(getHandle(), pixel_format, gl32, use_display_bpp, support_window, support_pbuffer, double_buffered);
}
- private static native void nChoosePixelFormat(ByteBuffer peer_info_handle, PixelFormat pixel_format, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException;
+ private static native void nChoosePixelFormat(ByteBuffer peer_info_handle, PixelFormat pixel_format, boolean gl32, boolean use_display_bpp, boolean support_window, boolean support_pbuffer, boolean double_buffered) throws LWJGLException;
public void destroy() {
nDestroy(getHandle());
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/Pbuffer.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/Pbuffer.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/Pbuffer.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -216,7 +216,7 @@
throw new NullPointerException("Pixel format must be non-null");
this.width = width;
this.height = height;
- this.peer_info = createPbuffer(width, height, pixel_format, renderTexture);
+ this.peer_info = createPbuffer(width, height, pixel_format, attribs, renderTexture);
Context shared_context = null;
if ( shared_drawable == null )
shared_drawable = Display.getDrawable(); // May be null
@@ -225,15 +225,15 @@
this.context = new ContextGL(peer_info, attribs, (ContextGL)shared_context);
}
- private static PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, RenderTexture renderTexture) throws LWJGLException {
+ private static PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs, RenderTexture renderTexture) throws LWJGLException {
if ( renderTexture == null ) {
// Though null is a perfectly valid argument, Matrox Parhelia drivers expect
// a 0 terminated list, or else they crash. Supplying NULL or 0, should
// cause the drivers to use default settings
IntBuffer defaultAttribs = BufferUtils.createIntBuffer(1);
- return Display.getImplementation().createPbuffer(width, height, pixel_format, null, defaultAttribs);
+ return Display.getImplementation().createPbuffer(width, height, pixel_format, attribs, null, defaultAttribs);
} else
- return Display.getImplementation().createPbuffer(width, height, pixel_format,
+ return Display.getImplementation().createPbuffer(width, height, pixel_format, attribs,
renderTexture.pixelFormatCaps,
renderTexture.pBufferAttribs);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsCanvasImplementation.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -66,7 +66,7 @@
});
}
- public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
return new WindowsAWTGLCanvasPeerInfo(component, pixel_format);
}
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsContextAttribs.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsContextAttribs.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsContextAttribs.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -40,14 +40,14 @@
private static final int WGL_CONTEXT_MAJOR_VERSION_ARB = 0x2091;
private static final int WGL_CONTEXT_MINOR_VERSION_ARB = 0x2092;
- private static final int WGL_CONTEXT_LAYER_PLANE_ARB = 0x2093;
- private static final int WGL_CONTEXT_FLAGS_ARB = 0x2094;
- private static final int WGL_CONTEXT_PROFILE_MASK_ARB = 0x9126;
+ private static final int WGL_CONTEXT_LAYER_PLANE_ARB = 0x2093;
+ private static final int WGL_CONTEXT_FLAGS_ARB = 0x2094;
+ private static final int WGL_CONTEXT_PROFILE_MASK_ARB = 0x9126;
- private static final int WGL_CONTEXT_DEBUG_BIT_ARB = 0x0001;
+ private static final int WGL_CONTEXT_DEBUG_BIT_ARB = 0x0001;
private static final int WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x0002;
- private static final int WGL_CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
+ private static final int WGL_CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001;
private static final int WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
WindowsContextAttribs() {
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2011-09-03 18:52:45 UTC (rev 3632)
@@ -247,7 +247,7 @@
private static long getHwnd(Canvas parent) throws LWJGLException {
AWTCanvasImplementation awt_impl = AWTGLCanvas.createImplementation();
- WindowsPeerInfo parent_peer_info = (WindowsPeerInfo)awt_impl.createPeerInfo(parent, null);
+ WindowsPeerInfo parent_peer_info = (WindowsPeerInfo)awt_impl.createPeerInfo(parent, null, null);
ByteBuffer parent_peer_info_handle = parent_peer_info.lockAndGetHandle();
try {
return parent_peer_info.getHwnd();
@@ -463,7 +463,7 @@
return saved;
}
- public PeerInfo createPeerInfo(PixelFormat pixel_format) throws LWJGLException {
+ public PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
peer_info = new WindowsDisplayPeerInfo(false);
return peer_info;
}
@@ -657,7 +657,7 @@
return ((WindowsPbufferPeerInfo)handle).isBufferLost();
}
- public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format,
+ public PeerInfo createPbuffer(int width, int height, PixelFormat pixel_format, ContextAttribs attribs,
IntBuffer pixelFormatCaps,
IntBuffer pBufferAttribs) throws LWJGLException {
return new WindowsPbufferPeerInfo(width, height, pixel_format, pixelFormatCaps, pBufferAttribs);
Modified: trunk/LWJGL/src/native/macosx/context.h
===================================================================
--- trunk/LWJGL/src/native/macosx/context.h 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/native/macosx/context.h 2011-09-03 18:52:45 UTC (rev 3632)
@@ -1,31 +1,31 @@
-/*
+/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
+ * modification, are permitted provided that the following conditions are
* met:
- *
- * * Redistributions of source code must retain the above copyright
+ *
+ * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@@ -57,5 +57,5 @@
};
} MacOSXPeerInfo;
-NSOpenGLPixelFormat *choosePixelFormat(JNIEnv *env, jobject pixel_format, bool use_display_bpp, bool support_window, bool support_pbuffer, bool double_buffered);
+NSOpenGLPixelFormat *choosePixelFormat(JNIEnv *env, jobject pixel_format, bool gl32, bool use_display_bpp, bool support_window, bool support_pbuffer, bool double_buffered);
#endif
Modified: trunk/LWJGL/src/native/macosx/context.m
===================================================================
--- trunk/LWJGL/src/native/macosx/context.m 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/native/macosx/context.m 2011-09-03 18:52:45 UTC (rev 3632)
@@ -1,31 +1,31 @@
-/*
+/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
+ * modification, are permitted provided that the following conditions are
* met:
- *
- * * Redistributions of source code must retain the above copyright
+ *
+ * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@@ -51,12 +51,12 @@
return address;
}
-static CFBundleRef loadFramework(JNIEnv *env) {
+static CFBundleRef loadFramework(JNIEnv *env) {
CFStringRef framework_path = CFSTR("/System/Library/Frameworks/OpenGL.framework");
if (framework_path == NULL) {
printfDebugJava(env, "Failed to allocate string");
return NULL;
- }
+ }
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, framework_path, kCFURLPOSIXPathStyle, TRUE);
if (url == NULL) {
printfDebugJava(env, "Failed to allocate URL");
@@ -87,14 +87,14 @@
}
}
-NSOpenGLPixelFormat *choosePixelFormat(JNIEnv *env, jobject pixel_format, bool use_display_bpp, bool support_window, bool support_pbuffer, bool double_buffered) {
+NSOpenGLPixelFormat *choosePixelFormat(JNIEnv *env, jobject pixel_format, bool gl32, bool use_display_bpp, bool support_window, bool support_pbuffer, bool double_buffered) {
int bpp;
jclass cls_pixel_format = (*env)->GetObjectClass(env, pixel_format);
if (use_display_bpp)
bpp = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
else
bpp = (int)(*env)->GetIntField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "bpp", "I"));
-
+
int alpha = (int)(*env)->GetIntField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "alpha", "I"));
int depth = (int)(*env)->GetIntField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "depth", "I"));
int stencil = (int)(*env)->GetIntField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "stencil", "I"));
@@ -125,6 +125,10 @@
putAttrib(&attribs, NSOpenGLPFASampleBuffers); putAttrib(&attribs, samples > 0 ? 1 : 0);
putAttrib(&attribs, NSOpenGLPFASamples); putAttrib(&attribs, samples);
putAttrib(&attribs, NSOpenGLPFAAuxBuffers); putAttrib(&attribs, num_aux_buffers);
+ if (gl32) {
+ putAttrib(&attribs, 99); // NSOpenGLPFAOpenGLProfile
+ putAttrib(&attribs, 0x3200); // NSOpenGLProfileVersion3_2Core
+ }
if (support_window)
putAttrib(&attribs, NSOpenGLPFAWindow);
if (support_pbuffer)
Modified: trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXContextImplementation.m
===================================================================
--- trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXContextImplementation.m 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXContextImplementation.m 2011-09-03 18:52:45 UTC (rev 3632)
@@ -1,31 +1,31 @@
-/*
+/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
+ * modification, are permitted provided that the following conditions are
* met:
- *
- * * Redistributions of source code must retain the above copyright
+ *
+ * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@@ -49,7 +49,7 @@
} MacOSXContext;
JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nCreate
- (JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject attribs, jobject shared_context_handle) {
+ (JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject shared_context_handle) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MacOSXPeerInfo *peer_info;
MacOSXContext *shared_context_info;
@@ -75,7 +75,7 @@
context_info->context = context;
context_info->peer_info = peer_info;
[pool release];
- return context_handle;
+ return context_handle;
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nSwapBuffers
Modified: trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXPeerInfo.m
===================================================================
--- trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXPeerInfo.m 2011-09-03 18:41:22 UTC (rev 3631)
+++ trunk/LWJGL/src/native/macosx/org_lwjgl_opengl_MacOSXPeerInfo.m 2011-09-03 18:52:45 UTC (rev 3632)
@@ -1,31 +1,31 @@
-/*
+/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
+ * modification, are permitted provided that the following conditions are
* met:
- *
- * * Redistributions of source code must retain the above copyright
+ *
+ * * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * * Neither the name of 'LWJGL' nor the names of
- * its contributors may be used to endorse or promote products derived
+ * * Neither the name of 'LWJGL' nor the names of
+ * its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
@@ -52,10 +52,10 @@
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_MacOSXPeerInfo_nChoosePixelFormat
- (JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject pixel_format, jboolean use_display_bpp, jboolean support_window, jboolean support_pbuffer, jboolean double_buffered) {
+ (JNIEnv *env, jclass clazz, jobject peer_info_handle, jobject pixel_format, jboolean gl32, jboolean use_display_bpp, jboolean support_window, jboolean support_pbuffer, jboolean double_buffered) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MacOSXPeerInfo *peer_info = (MacOSXPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
- NSOpenGLPixelFormat *macosx_pixel_format = choosePixelFormat(env, pixel_format, use_display_bpp, support_window, support_pbuffer, double_buffered);
+ NSOpenGLPixelFormat *macosx_pixel_format = choosePixelFormat(env, pixel_format, gl32, use_display_bpp, support_window, support_pbuffer, double_buffered);
if (pixel_format == nil) {
throwException(env, "Could not find pixel format");
return;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|