Added support for OpenGL 3.2 on MacOS X 10.7+.
This commit is contained in:
parent
6612d252ac
commit
41af142324
|
@ -47,7 +47,7 @@ interface AWTCanvasImplementation {
|
|||
/**
|
||||
* 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.
|
||||
|
|
|
@ -107,7 +107,7 @@ public class AWTGLCanvas extends Canvas implements DrawableLWJGL, ComponentListe
|
|||
}
|
||||
}
|
||||
|
||||
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 @@ public class AWTGLCanvas extends Canvas implements DrawableLWJGL, ComponentListe
|
|||
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 {
|
||||
|
|
|
@ -51,6 +51,10 @@ import java.nio.IntBuffer;
|
|||
* 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 <spasi@users.sourceforge.net>
|
||||
*/
|
||||
|
@ -243,14 +247,15 @@ public final class ContextAttribs {
|
|||
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;
|
||||
|
|
|
@ -93,10 +93,10 @@ public final class Display {
|
|||
* 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 @@ public final class Display {
|
|||
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 @@ public final class Display {
|
|||
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 @@ public final class Display {
|
|||
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 @@ public final class Display {
|
|||
Display.drawable = drawable;
|
||||
|
||||
try {
|
||||
drawable.setPixelFormat(pixel_format);
|
||||
drawable.setPixelFormat(pixel_format, attribs);
|
||||
try {
|
||||
createWindow();
|
||||
try {
|
||||
|
@ -1008,6 +1008,11 @@ public final class Display {
|
|||
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 @@ public final class Display {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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 @@ public final class Display {
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ interface DisplayImplementation extends InputImplementation {
|
|||
* 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 @@ interface DisplayImplementation extends InputImplementation {
|
|||
/**
|
||||
* 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 @@ interface DisplayImplementation extends InputImplementation {
|
|||
* @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.
|
||||
*/
|
||||
|
|
|
@ -53,8 +53,12 @@ abstract class DrawableGL implements DrawableLWJGL {
|
|||
}
|
||||
|
||||
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() {
|
||||
|
|
|
@ -42,6 +42,8 @@ interface DrawableLWJGL extends Drawable {
|
|||
|
||||
void setPixelFormat(PixelFormatLWJGL pf) throws LWJGLException;
|
||||
|
||||
void setPixelFormat(PixelFormatLWJGL pf, ContextAttribs attribs) throws LWJGLException;
|
||||
|
||||
PixelFormatLWJGL getPixelFormat();
|
||||
|
||||
/**
|
||||
|
|
|
@ -76,7 +76,7 @@ final class LinuxCanvasImplementation implements AWTCanvasImplementation {
|
|||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ package org.lwjgl.opengl;
|
|||
|
||||
/**
|
||||
* An implementation of ContextAttribs using GLX_create_context.
|
||||
* <p/><p/>
|
||||
* ---- WIP - GLX_create_context has not been defined yet ----
|
||||
*
|
||||
* @author spasi <spasi@users.sourceforge.net>
|
||||
*/
|
||||
|
@ -42,14 +40,13 @@ final class LinuxContextAttribs implements ContextAttribsImplementation {
|
|||
|
||||
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 @@ final class LinuxContextAttribs implements ContextAttribsImplementation {
|
|||
}
|
||||
|
||||
public int getLayerPlaneAttrib() {
|
||||
return GLX_CONTEXT_LAYER_PLANE_ARB;
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public int getFlagsAttrib() {
|
||||
|
|
|
@ -516,7 +516,7 @@ final class LinuxDisplay implements DisplayImplementation {
|
|||
|
||||
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 @@ final class LinuxDisplay implements DisplayImplementation {
|
|||
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 @@ final class LinuxDisplay implements DisplayImplementation {
|
|||
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);
|
||||
|
|
|
@ -44,8 +44,8 @@ import java.awt.Canvas;
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,11 +44,11 @@ import org.lwjgl.LWJGLException;
|
|||
* $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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,8 +45,8 @@ import org.lwjgl.LWJGLException;
|
|||
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 {
|
||||
|
|
|
@ -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 <spasi@users.sourceforge.net>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
|
@ -46,13 +46,13 @@ final class MacOSXContextImplementation implements ContextImplementation {
|
|||
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();
|
||||
|
|
|
@ -240,11 +240,11 @@ final class MacOSXDisplay implements DisplayImplementation {
|
|||
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 @@ final class MacOSXDisplay implements DisplayImplementation {
|
|||
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 @@ final class MacOSXDisplay implements DisplayImplementation {
|
|||
public boolean isInsideWindow() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public void setResizable(boolean resizable) {
|
||||
frame.setResizable(resizable);
|
||||
}
|
||||
|
||||
|
||||
public boolean wasResized() {
|
||||
return canvas_listener.wasResized();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -44,8 +44,8 @@ import org.lwjgl.LWJGLException;
|
|||
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 {
|
||||
|
|
|
@ -42,8 +42,8 @@ import org.lwjgl.LWJGLException;
|
|||
* $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;
|
||||
|
|
|
@ -43,18 +43,23 @@ import org.lwjgl.LWJGLUtil;
|
|||
* $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());
|
||||
|
|
|
@ -216,7 +216,7 @@ public final class Pbuffer extends DrawableGL {
|
|||
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 @@ public final class Pbuffer extends DrawableGL {
|
|||
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);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ final class WindowsCanvasImplementation implements AWTCanvasImplementation {
|
|||
});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,14 +40,14 @@ final class WindowsContextAttribs implements ContextAttribsImplementation {
|
|||
|
||||
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() {
|
||||
|
|
|
@ -247,7 +247,7 @@ final class WindowsDisplay implements DisplayImplementation {
|
|||
|
||||
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 @@ final class WindowsDisplay implements DisplayImplementation {
|
|||
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 @@ final class WindowsDisplay implements DisplayImplementation {
|
|||
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);
|
||||
|
|
|
@ -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 @@ typedef struct {
|
|||
};
|
||||
} 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
|
||||
|
|
|
@ -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 @@ void *extgl_GetProcAddress(const char *name) {
|
|||
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 @@ void extgl_Close(void)
|
|||
}
|
||||
}
|
||||
|
||||
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 @@ NSOpenGLPixelFormat *choosePixelFormat(JNIEnv *env, jobject pixel_format, bool u
|
|||
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)
|
||||
|
|
|
@ -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 @@ typedef struct {
|
|||
} 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 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nCre
|
|||
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
|
||||
|
|
|
@ -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 jobject JNICALL Java_org_lwjgl_opengl_MacOSXPeerInfo_createHandle
|
|||
}
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue