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.
|
* 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.
|
* 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();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,7 +311,7 @@ public class AWTGLCanvas extends Canvas implements DrawableLWJGL, ComponentListe
|
||||||
return;
|
return;
|
||||||
try {
|
try {
|
||||||
if ( peer_info == null ) {
|
if ( peer_info == null ) {
|
||||||
this.peer_info = implementation.createPeerInfo(this, pixel_format);
|
this.peer_info = implementation.createPeerInfo(this, pixel_format, attribs);
|
||||||
}
|
}
|
||||||
peer_info.lockAndGetHandle();
|
peer_info.lockAndGetHandle();
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -51,6 +51,10 @@ import java.nio.IntBuffer;
|
||||||
* If the forwardCompatible
|
* If the forwardCompatible
|
||||||
* attribute is used, LWJGL will not load the deprecated functionality (as defined in the OpenGL 3.0 specification). This
|
* 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.
|
* 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>
|
* @author spasi <spasi@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
|
@ -243,14 +247,15 @@ public final class ContextAttribs {
|
||||||
return new LinuxContextAttribs();
|
return new LinuxContextAttribs();
|
||||||
case LWJGLUtil.PLATFORM_WINDOWS:
|
case LWJGLUtil.PLATFORM_WINDOWS:
|
||||||
return new WindowsContextAttribs();
|
return new WindowsContextAttribs();
|
||||||
case LWJGLUtil.PLATFORM_MACOSX:
|
|
||||||
return new MacOSXContextAttribs();
|
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException("Unsupported platform");
|
throw new IllegalStateException("Unsupported platform");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IntBuffer getAttribList() {
|
IntBuffer getAttribList() {
|
||||||
|
if ( LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_MACOSX )
|
||||||
|
return null;
|
||||||
|
|
||||||
ContextAttribsImplementation implementation = getImplementation();
|
ContextAttribsImplementation implementation = getImplementation();
|
||||||
|
|
||||||
int attribCount = 0;
|
int attribCount = 0;
|
||||||
|
|
|
@ -93,10 +93,10 @@ public final class Display {
|
||||||
* unlike GL, where it is typically at the bottom of the display.
|
* unlike GL, where it is typically at the bottom of the display.
|
||||||
*/
|
*/
|
||||||
private static int y = -1;
|
private static int y = -1;
|
||||||
|
|
||||||
/** the width of the Display window */
|
/** the width of the Display window */
|
||||||
private static int width = 0;
|
private static int width = 0;
|
||||||
|
|
||||||
/** the height of the Display window */
|
/** the height of the Display window */
|
||||||
private static int height = 0;
|
private static int height = 0;
|
||||||
|
|
||||||
|
@ -115,9 +115,9 @@ public final class Display {
|
||||||
private static boolean window_created;
|
private static boolean window_created;
|
||||||
|
|
||||||
private static boolean parent_resized;
|
private static boolean parent_resized;
|
||||||
|
|
||||||
private static boolean window_resized;
|
private static boolean window_resized;
|
||||||
|
|
||||||
private static boolean window_resizable;
|
private static boolean window_resizable;
|
||||||
|
|
||||||
/** Initial Background Color of Display */
|
/** Initial Background Color of Display */
|
||||||
|
@ -305,7 +305,7 @@ public final class Display {
|
||||||
DisplayMode mode = getEffectiveMode();
|
DisplayMode mode = getEffectiveMode();
|
||||||
display_impl.createWindow(drawable, mode, tmp_parent, getWindowX(), getWindowY());
|
display_impl.createWindow(drawable, mode, tmp_parent, getWindowX(), getWindowY());
|
||||||
window_created = true;
|
window_created = true;
|
||||||
|
|
||||||
width = Display.getDisplayMode().getWidth();
|
width = Display.getDisplayMode().getWidth();
|
||||||
height = Display.getDisplayMode().getHeight();
|
height = Display.getDisplayMode().getHeight();
|
||||||
|
|
||||||
|
@ -674,9 +674,9 @@ public final class Display {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window_resized = !isFullscreen() && parent == null && display_impl.wasResized();
|
window_resized = !isFullscreen() && parent == null && display_impl.wasResized();
|
||||||
|
|
||||||
if ( window_resized ) {
|
if ( window_resized ) {
|
||||||
width = display_impl.getWidth();
|
width = display_impl.getWidth();
|
||||||
height = display_impl.getHeight();
|
height = display_impl.getHeight();
|
||||||
|
@ -894,7 +894,7 @@ public final class Display {
|
||||||
Display.drawable = drawable;
|
Display.drawable = drawable;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
drawable.setPixelFormat(pixel_format);
|
drawable.setPixelFormat(pixel_format, attribs);
|
||||||
try {
|
try {
|
||||||
createWindow();
|
createWindow();
|
||||||
try {
|
try {
|
||||||
|
@ -1008,6 +1008,11 @@ public final class Display {
|
||||||
switchDisplayMode();
|
switchDisplayMode();
|
||||||
|
|
||||||
final DrawableGLES drawable = new DrawableGLES() {
|
final DrawableGLES drawable = new DrawableGLES() {
|
||||||
|
|
||||||
|
public void setPixelFormat(final PixelFormatLWJGL pf, final ContextAttribs attribs) throws LWJGLException {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
synchronized ( GlobalLock.lock ) {
|
synchronized ( GlobalLock.lock ) {
|
||||||
if ( !isCreated() )
|
if ( !isCreated() )
|
||||||
|
@ -1269,11 +1274,11 @@ public final class Display {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable or disable the Display window to be resized.
|
* 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.
|
* false to disable resizing on the Display window.
|
||||||
*/
|
*/
|
||||||
public static void setResizable(boolean resizable) {
|
public static void setResizable(boolean resizable) {
|
||||||
|
@ -1282,65 +1287,65 @@ public final class Display {
|
||||||
display_impl.setResizable(resizable);
|
display_impl.setResizable(resizable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if the Display window is resizable.
|
* @return true if the Display window is resizable.
|
||||||
*/
|
*/
|
||||||
public static boolean isResizable() {
|
public static boolean isResizable() {
|
||||||
return window_resizable;
|
return window_resizable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if the Display window has been resized.
|
* @return true if the Display window has been resized.
|
||||||
* This value will be updated after a call to Display.update().
|
* 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)
|
* This will return false if running in fullscreen or with Display.setParent(Canvas parent)
|
||||||
*/
|
*/
|
||||||
public static boolean wasResized() {
|
public static boolean wasResized() {
|
||||||
return window_resized;
|
return window_resized;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return this method will return the width of the Display window.
|
* @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 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
|
* If running Display.setParent(Canvas parent) is being used, the width of the parent
|
||||||
* will be returned.
|
* will be returned.
|
||||||
*
|
*
|
||||||
* This value will be updated after a call to Display.update().
|
* This value will be updated after a call to Display.update().
|
||||||
*/
|
*/
|
||||||
public static int getWidth() {
|
public static int getWidth() {
|
||||||
|
|
||||||
if (Display.isFullscreen()) {
|
if (Display.isFullscreen()) {
|
||||||
return Display.getDisplayMode().getWidth();
|
return Display.getDisplayMode().getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
return parent.getWidth();
|
return parent.getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return this method will return the height of the Display window.
|
* @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 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
|
* If running Display.setParent(Canvas parent) is being used, the height of the parent
|
||||||
* will be returned.
|
* will be returned.
|
||||||
*
|
*
|
||||||
* This value will be updated after a call to Display.update().
|
* This value will be updated after a call to Display.update().
|
||||||
*/
|
*/
|
||||||
public static int getHeight() {
|
public static int getHeight() {
|
||||||
|
|
||||||
if (Display.isFullscreen()) {
|
if (Display.isFullscreen()) {
|
||||||
return Display.getDisplayMode().getHeight();
|
return Display.getDisplayMode().getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
return parent.getHeight();
|
return parent.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ interface DisplayImplementation extends InputImplementation {
|
||||||
* Create the native PeerInfo.
|
* Create the native PeerInfo.
|
||||||
* @throws LWJGLException
|
* @throws LWJGLException
|
||||||
*/
|
*/
|
||||||
PeerInfo createPeerInfo(PixelFormat pixel_format) throws LWJGLException;
|
PeerInfo createPeerInfo(PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException;
|
||||||
|
|
||||||
// void destroyPeerInfo();
|
// void destroyPeerInfo();
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ interface DisplayImplementation extends InputImplementation {
|
||||||
/**
|
/**
|
||||||
* Method to create a Pbuffer
|
* 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 pixelFormatCaps,
|
||||||
IntBuffer pBufferAttribs) throws LWJGLException;
|
IntBuffer pBufferAttribs) throws LWJGLException;
|
||||||
|
|
||||||
|
@ -159,25 +159,25 @@ interface DisplayImplementation extends InputImplementation {
|
||||||
* @return number of icons used.
|
* @return number of icons used.
|
||||||
*/
|
*/
|
||||||
int setIcon(ByteBuffer[] icons);
|
int setIcon(ByteBuffer[] icons);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable or disable the Display window to be resized.
|
* 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.
|
* false to disable resizing on the Display window.
|
||||||
*/
|
*/
|
||||||
void setResizable(boolean resizable);
|
void setResizable(boolean resizable);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if the Display window has been resized since this method was last called.
|
* @return true if the Display window has been resized since this method was last called.
|
||||||
*/
|
*/
|
||||||
boolean wasResized();
|
boolean wasResized();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return this method will return a the width of the Display window.
|
* @return this method will return a the width of the Display window.
|
||||||
*/
|
*/
|
||||||
int getWidth();
|
int getWidth();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return this method will return a the height of the Display window.
|
* @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 {
|
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.pixel_format = (PixelFormat)pf;
|
||||||
this.peer_info = Display.getImplementation().createPeerInfo(pixel_format);
|
this.peer_info = Display.getImplementation().createPeerInfo(pixel_format, attribs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PixelFormatLWJGL getPixelFormat() {
|
public PixelFormatLWJGL getPixelFormat() {
|
||||||
|
|
|
@ -42,6 +42,8 @@ interface DrawableLWJGL extends Drawable {
|
||||||
|
|
||||||
void setPixelFormat(PixelFormatLWJGL pf) throws LWJGLException;
|
void setPixelFormat(PixelFormatLWJGL pf) throws LWJGLException;
|
||||||
|
|
||||||
|
void setPixelFormat(PixelFormatLWJGL pf, ContextAttribs attribs) throws LWJGLException;
|
||||||
|
|
||||||
PixelFormatLWJGL getPixelFormat();
|
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);
|
return new LinuxAWTGLCanvasPeerInfo(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,8 +33,6 @@ package org.lwjgl.opengl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of ContextAttribs using GLX_create_context.
|
* 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>
|
* @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_MAJOR_VERSION_ARB = 0x2091;
|
||||||
private static final int GLX_CONTEXT_MINOR_VERSION_ARB = 0x2092;
|
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_FLAGS_ARB = 0x2094;
|
private static final int GLX_CONTEXT_PROFILE_MASK_ARB = 0x9126;
|
||||||
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_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;
|
private static final int GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
|
||||||
|
|
||||||
LinuxContextAttribs() {
|
LinuxContextAttribs() {
|
||||||
|
@ -64,7 +61,7 @@ final class LinuxContextAttribs implements ContextAttribsImplementation {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLayerPlaneAttrib() {
|
public int getLayerPlaneAttrib() {
|
||||||
return GLX_CONTEXT_LAYER_PLANE_ARB;
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getFlagsAttrib() {
|
public int getFlagsAttrib() {
|
||||||
|
|
|
@ -516,7 +516,7 @@ final class LinuxDisplay implements DisplayImplementation {
|
||||||
|
|
||||||
private static long getHandle(Canvas parent) throws LWJGLException {
|
private static long getHandle(Canvas parent) throws LWJGLException {
|
||||||
AWTCanvasImplementation awt_impl = AWTGLCanvas.createImplementation();
|
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();
|
ByteBuffer parent_peer_info_handle = parent_peer_info.lockAndGetHandle();
|
||||||
try {
|
try {
|
||||||
return parent_peer_info.getDrawable();
|
return parent_peer_info.getDrawable();
|
||||||
|
@ -757,7 +757,7 @@ final class LinuxDisplay implements DisplayImplementation {
|
||||||
return result;
|
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);
|
peer_info = new LinuxDisplayPeerInfo(pixel_format);
|
||||||
return peer_info;
|
return peer_info;
|
||||||
}
|
}
|
||||||
|
@ -1243,7 +1243,7 @@ final class LinuxDisplay implements DisplayImplementation {
|
||||||
return false;
|
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 pixelFormatCaps,
|
||||||
IntBuffer pBufferAttribs) throws LWJGLException {
|
IntBuffer pBufferAttribs) throws LWJGLException {
|
||||||
return new LinuxPbufferPeerInfo(width, height, pixel_format);
|
return new LinuxPbufferPeerInfo(width, height, pixel_format);
|
||||||
|
|
|
@ -44,8 +44,8 @@ import java.awt.Canvas;
|
||||||
final class MacOSXAWTGLCanvasPeerInfo extends MacOSXCanvasPeerInfo {
|
final class MacOSXAWTGLCanvasPeerInfo extends MacOSXCanvasPeerInfo {
|
||||||
private final Canvas component;
|
private final Canvas component;
|
||||||
|
|
||||||
MacOSXAWTGLCanvasPeerInfo(Canvas component, PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
|
MacOSXAWTGLCanvasPeerInfo(Canvas component, PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
|
||||||
super(pixel_format, support_pbuffer);
|
super(pixel_format, attribs, support_pbuffer);
|
||||||
this.component = component;
|
this.component = component;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,11 @@ import org.lwjgl.LWJGLException;
|
||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
final class MacOSXCanvasImplementation implements AWTCanvasImplementation {
|
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 {
|
try {
|
||||||
return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, true);
|
return new MacOSXAWTGLCanvasPeerInfo(component, pixel_format, attribs, true);
|
||||||
} catch (LWJGLException e) {
|
} 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 {
|
abstract class MacOSXCanvasPeerInfo extends MacOSXPeerInfo {
|
||||||
private final AWTSurfaceLock awt_surface = new AWTSurfaceLock();
|
private final AWTSurfaceLock awt_surface = new AWTSurfaceLock();
|
||||||
|
|
||||||
protected MacOSXCanvasPeerInfo(PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
|
protected MacOSXCanvasPeerInfo(PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
|
||||||
super(pixel_format, true, true, support_pbuffer, true);
|
super(pixel_format, attribs, true, true, support_pbuffer, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void initHandle(Canvas component) throws LWJGLException {
|
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 {
|
public ByteBuffer create(PeerInfo peer_info, IntBuffer attribs, ByteBuffer shared_context_handle) throws LWJGLException {
|
||||||
ByteBuffer peer_handle = peer_info.lockAndGetHandle();
|
ByteBuffer peer_handle = peer_info.lockAndGetHandle();
|
||||||
try {
|
try {
|
||||||
return nCreate(peer_handle, attribs, shared_context_handle);
|
return nCreate(peer_handle, shared_context_handle);
|
||||||
} finally {
|
} finally {
|
||||||
peer_info.unlock();
|
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 {
|
public void swapBuffers() throws LWJGLException {
|
||||||
ContextGL current_context = ContextGL.getCurrentContext();
|
ContextGL current_context = ContextGL.getCurrentContext();
|
||||||
|
|
|
@ -240,11 +240,11 @@ final class MacOSXDisplay implements DisplayImplementation {
|
||||||
return frame != null && frame.getCanvas().syncIsDirty();
|
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 {
|
try {
|
||||||
return new MacOSXDisplayPeerInfo(pixel_format, true);
|
return new MacOSXDisplayPeerInfo(pixel_format, attribs, true);
|
||||||
} catch (LWJGLException e) {
|
} 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;
|
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 pixelFormatCaps,
|
||||||
IntBuffer pBufferAttribs) throws LWJGLException {
|
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) {
|
public void setPbufferAttrib(PeerInfo handle, int attrib, int value) {
|
||||||
|
@ -507,13 +507,13 @@ final class MacOSXDisplay implements DisplayImplementation {
|
||||||
public boolean isInsideWindow() {
|
public boolean isInsideWindow() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setResizable(boolean resizable) {
|
public void setResizable(boolean resizable) {
|
||||||
frame.setResizable(resizable);
|
frame.setResizable(resizable);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean wasResized() {
|
public boolean wasResized() {
|
||||||
return canvas_listener.wasResized();
|
return canvas_listener.wasResized();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,8 +44,8 @@ import org.lwjgl.LWJGLException;
|
||||||
final class MacOSXDisplayPeerInfo extends MacOSXCanvasPeerInfo {
|
final class MacOSXDisplayPeerInfo extends MacOSXCanvasPeerInfo {
|
||||||
private boolean locked;
|
private boolean locked;
|
||||||
|
|
||||||
MacOSXDisplayPeerInfo(PixelFormat pixel_format, boolean support_pbuffer) throws LWJGLException {
|
MacOSXDisplayPeerInfo(PixelFormat pixel_format, ContextAttribs attribs, boolean support_pbuffer) throws LWJGLException {
|
||||||
super(pixel_format, support_pbuffer);
|
super(pixel_format, attribs, support_pbuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void doLockAndInitHandle() throws LWJGLException {
|
protected void doLockAndInitHandle() throws LWJGLException {
|
||||||
|
|
|
@ -42,8 +42,8 @@ import org.lwjgl.LWJGLException;
|
||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
final class MacOSXPbufferPeerInfo extends MacOSXPeerInfo {
|
final class MacOSXPbufferPeerInfo extends MacOSXPeerInfo {
|
||||||
MacOSXPbufferPeerInfo(int width, int height, PixelFormat pixel_format) throws LWJGLException {
|
MacOSXPbufferPeerInfo(int width, int height, PixelFormat pixel_format, ContextAttribs attribs) throws LWJGLException {
|
||||||
super(pixel_format, false, false, true, false);
|
super(pixel_format, attribs, false, false, true, false);
|
||||||
nCreate(getHandle(), width, height);
|
nCreate(getHandle(), width, height);
|
||||||
}
|
}
|
||||||
private static native void nCreate(ByteBuffer handle, int width, int height) throws LWJGLException;
|
private static native void nCreate(ByteBuffer handle, int width, int height) throws LWJGLException;
|
||||||
|
|
|
@ -43,18 +43,23 @@ import org.lwjgl.LWJGLUtil;
|
||||||
* $Id$
|
* $Id$
|
||||||
*/
|
*/
|
||||||
abstract class MacOSXPeerInfo extends PeerInfo {
|
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());
|
super(createHandle());
|
||||||
if (pixel_format.isFloatingPoint() && !LWJGLUtil.isMacOSXEqualsOrBetterThan(10, 4))
|
if (pixel_format.isFloatingPoint() && !LWJGLUtil.isMacOSXEqualsOrBetterThan(10, 4))
|
||||||
throw new LWJGLException("Floating point pixel format requested, but is not supported");
|
throw new LWJGLException("Floating point pixel format requested, but it requires MacOS X 10.4 or newer");
|
||||||
choosePixelFormat(pixel_format, use_display_bpp, support_window, support_pbuffer, double_buffered);
|
|
||||||
|
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 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 {
|
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, use_display_bpp, support_window, support_pbuffer, double_buffered);
|
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() {
|
public void destroy() {
|
||||||
nDestroy(getHandle());
|
nDestroy(getHandle());
|
||||||
|
|
|
@ -216,7 +216,7 @@ public final class Pbuffer extends DrawableGL {
|
||||||
throw new NullPointerException("Pixel format must be non-null");
|
throw new NullPointerException("Pixel format must be non-null");
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
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;
|
Context shared_context = null;
|
||||||
if ( shared_drawable == null )
|
if ( shared_drawable == null )
|
||||||
shared_drawable = Display.getDrawable(); // May be 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);
|
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 ) {
|
if ( renderTexture == null ) {
|
||||||
// Though null is a perfectly valid argument, Matrox Parhelia drivers expect
|
// Though null is a perfectly valid argument, Matrox Parhelia drivers expect
|
||||||
// a 0 terminated list, or else they crash. Supplying NULL or 0, should
|
// a 0 terminated list, or else they crash. Supplying NULL or 0, should
|
||||||
// cause the drivers to use default settings
|
// cause the drivers to use default settings
|
||||||
IntBuffer defaultAttribs = BufferUtils.createIntBuffer(1);
|
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
|
} else
|
||||||
return Display.getImplementation().createPbuffer(width, height, pixel_format,
|
return Display.getImplementation().createPbuffer(width, height, pixel_format, attribs,
|
||||||
renderTexture.pixelFormatCaps,
|
renderTexture.pixelFormatCaps,
|
||||||
renderTexture.pBufferAttribs);
|
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);
|
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_MAJOR_VERSION_ARB = 0x2091;
|
||||||
private static final int WGL_CONTEXT_MINOR_VERSION_ARB = 0x2092;
|
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_LAYER_PLANE_ARB = 0x2093;
|
||||||
private static final int WGL_CONTEXT_FLAGS_ARB = 0x2094;
|
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_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_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;
|
private static final int WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002;
|
||||||
|
|
||||||
WindowsContextAttribs() {
|
WindowsContextAttribs() {
|
||||||
|
|
|
@ -247,7 +247,7 @@ final class WindowsDisplay implements DisplayImplementation {
|
||||||
|
|
||||||
private static long getHwnd(Canvas parent) throws LWJGLException {
|
private static long getHwnd(Canvas parent) throws LWJGLException {
|
||||||
AWTCanvasImplementation awt_impl = AWTGLCanvas.createImplementation();
|
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();
|
ByteBuffer parent_peer_info_handle = parent_peer_info.lockAndGetHandle();
|
||||||
try {
|
try {
|
||||||
return parent_peer_info.getHwnd();
|
return parent_peer_info.getHwnd();
|
||||||
|
@ -463,7 +463,7 @@ final class WindowsDisplay implements DisplayImplementation {
|
||||||
return saved;
|
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);
|
peer_info = new WindowsDisplayPeerInfo(false);
|
||||||
return peer_info;
|
return peer_info;
|
||||||
}
|
}
|
||||||
|
@ -657,7 +657,7 @@ final class WindowsDisplay implements DisplayImplementation {
|
||||||
return ((WindowsPbufferPeerInfo)handle).isBufferLost();
|
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 pixelFormatCaps,
|
||||||
IntBuffer pBufferAttribs) throws LWJGLException {
|
IntBuffer pBufferAttribs) throws LWJGLException {
|
||||||
return new WindowsPbufferPeerInfo(width, height, pixel_format, pixelFormatCaps, pBufferAttribs);
|
return new WindowsPbufferPeerInfo(width, height, pixel_format, pixelFormatCaps, pBufferAttribs);
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2008 LWJGL Project
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* 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:
|
* 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.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* * Neither the name of 'LWJGL' nor the names of
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
* its contributors may be used to endorse or promote products derived
|
* its contributors may be used to endorse or promote products derived
|
||||||
* from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* 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
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
@ -57,5 +57,5 @@ typedef struct {
|
||||||
};
|
};
|
||||||
} MacOSXPeerInfo;
|
} 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
|
#endif
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2008 LWJGL Project
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* 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:
|
* 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.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* * Neither the name of 'LWJGL' nor the names of
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
* its contributors may be used to endorse or promote products derived
|
* its contributors may be used to endorse or promote products derived
|
||||||
* from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* 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
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
@ -51,12 +51,12 @@ void *extgl_GetProcAddress(const char *name) {
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CFBundleRef loadFramework(JNIEnv *env) {
|
static CFBundleRef loadFramework(JNIEnv *env) {
|
||||||
CFStringRef framework_path = CFSTR("/System/Library/Frameworks/OpenGL.framework");
|
CFStringRef framework_path = CFSTR("/System/Library/Frameworks/OpenGL.framework");
|
||||||
if (framework_path == NULL) {
|
if (framework_path == NULL) {
|
||||||
printfDebugJava(env, "Failed to allocate string");
|
printfDebugJava(env, "Failed to allocate string");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, framework_path, kCFURLPOSIXPathStyle, TRUE);
|
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, framework_path, kCFURLPOSIXPathStyle, TRUE);
|
||||||
if (url == NULL) {
|
if (url == NULL) {
|
||||||
printfDebugJava(env, "Failed to allocate URL");
|
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;
|
int bpp;
|
||||||
jclass cls_pixel_format = (*env)->GetObjectClass(env, pixel_format);
|
jclass cls_pixel_format = (*env)->GetObjectClass(env, pixel_format);
|
||||||
if (use_display_bpp)
|
if (use_display_bpp)
|
||||||
bpp = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
|
bpp = CGDisplayBitsPerPixel(kCGDirectMainDisplay);
|
||||||
else
|
else
|
||||||
bpp = (int)(*env)->GetIntField(env, pixel_format, (*env)->GetFieldID(env, cls_pixel_format, "bpp", "I"));
|
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 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 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"));
|
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, NSOpenGLPFASampleBuffers); putAttrib(&attribs, samples > 0 ? 1 : 0);
|
||||||
putAttrib(&attribs, NSOpenGLPFASamples); putAttrib(&attribs, samples);
|
putAttrib(&attribs, NSOpenGLPFASamples); putAttrib(&attribs, samples);
|
||||||
putAttrib(&attribs, NSOpenGLPFAAuxBuffers); putAttrib(&attribs, num_aux_buffers);
|
putAttrib(&attribs, NSOpenGLPFAAuxBuffers); putAttrib(&attribs, num_aux_buffers);
|
||||||
|
if (gl32) {
|
||||||
|
putAttrib(&attribs, 99); // NSOpenGLPFAOpenGLProfile
|
||||||
|
putAttrib(&attribs, 0x3200); // NSOpenGLProfileVersion3_2Core
|
||||||
|
}
|
||||||
if (support_window)
|
if (support_window)
|
||||||
putAttrib(&attribs, NSOpenGLPFAWindow);
|
putAttrib(&attribs, NSOpenGLPFAWindow);
|
||||||
if (support_pbuffer)
|
if (support_pbuffer)
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2008 LWJGL Project
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* 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:
|
* 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.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* * Neither the name of 'LWJGL' nor the names of
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
* its contributors may be used to endorse or promote products derived
|
* its contributors may be used to endorse or promote products derived
|
||||||
* from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* 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
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
@ -49,7 +49,7 @@ typedef struct {
|
||||||
} MacOSXContext;
|
} MacOSXContext;
|
||||||
|
|
||||||
JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nCreate
|
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];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
MacOSXPeerInfo *peer_info;
|
MacOSXPeerInfo *peer_info;
|
||||||
MacOSXContext *shared_context_info;
|
MacOSXContext *shared_context_info;
|
||||||
|
@ -75,7 +75,7 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nCre
|
||||||
context_info->context = context;
|
context_info->context = context;
|
||||||
context_info->peer_info = peer_info;
|
context_info->peer_info = peer_info;
|
||||||
[pool release];
|
[pool release];
|
||||||
return context_handle;
|
return context_handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nSwapBuffers
|
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nSwapBuffers
|
||||||
|
|
|
@ -1,31 +1,31 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2008 LWJGL Project
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* 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:
|
* 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.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
*
|
*
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* * Neither the name of 'LWJGL' nor the names of
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
* its contributors may be used to endorse or promote products derived
|
* its contributors may be used to endorse or promote products derived
|
||||||
* from this software without specific prior written permission.
|
* from this software without specific prior written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
* 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
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* 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
|
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];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
MacOSXPeerInfo *peer_info = (MacOSXPeerInfo *)(*env)->GetDirectBufferAddress(env, peer_info_handle);
|
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) {
|
if (pixel_format == nil) {
|
||||||
throwException(env, "Could not find pixel format");
|
throwException(env, "Could not find pixel format");
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue