* Fixed issue 550
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9985 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
fead899369
commit
be59bd91fb
@ -112,12 +112,30 @@ public abstract class LwjglContext implements JmeContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected int determineMaxSamples(int requestedSamples) {
|
protected int determineMaxSamples(int requestedSamples) {
|
||||||
|
boolean displayWasCurrent = false;
|
||||||
|
try {
|
||||||
|
// If we already have a valid context, determine samples using current
|
||||||
|
// context.
|
||||||
|
if (Display.isCreated() && Display.isCurrent()) {
|
||||||
|
if (GLContext.getCapabilities().GL_ARB_framebuffer_object) {
|
||||||
|
return GL11.glGetInteger(ARBFramebufferObject.GL_MAX_SAMPLES);
|
||||||
|
} else if (GLContext.getCapabilities().GL_EXT_framebuffer_multisample) {
|
||||||
|
return GL11.glGetInteger(EXTFramebufferMultisample.GL_MAX_SAMPLES_EXT);
|
||||||
|
}
|
||||||
|
// Doesn't support any of the needed extensions .. continue down.
|
||||||
|
displayWasCurrent = true;
|
||||||
|
}
|
||||||
|
} catch (LWJGLException ex) {
|
||||||
|
listener.handleError("Failed to check if display is current", ex);
|
||||||
|
}
|
||||||
|
|
||||||
if ((Pbuffer.getCapabilities() & Pbuffer.PBUFFER_SUPPORTED) == 0) {
|
if ((Pbuffer.getCapabilities() & Pbuffer.PBUFFER_SUPPORTED) == 0) {
|
||||||
// No pbuffer, assume everything is supported.
|
// No pbuffer, assume everything is supported.
|
||||||
return Integer.MAX_VALUE;
|
return Integer.MAX_VALUE;
|
||||||
} else {
|
} else {
|
||||||
Pbuffer pb = null;
|
Pbuffer pb = null;
|
||||||
|
|
||||||
|
if (!displayWasCurrent) {
|
||||||
// OpenGL2 method: Create pbuffer and query samples
|
// OpenGL2 method: Create pbuffer and query samples
|
||||||
// from GL_ARB_framebuffer_object or GL_EXT_framebuffer_multisample.
|
// from GL_ARB_framebuffer_object or GL_EXT_framebuffer_multisample.
|
||||||
try {
|
try {
|
||||||
@ -140,16 +158,20 @@ public abstract class LwjglContext implements JmeContext {
|
|||||||
pb = null;
|
pb = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// OpenGL1 method
|
// OpenGL1 method (DOESNT WORK RIGHT NOW ..)
|
||||||
requestedSamples = FastMath.nearestPowerOfTwo(requestedSamples);
|
requestedSamples = FastMath.nearestPowerOfTwo(requestedSamples);
|
||||||
|
try {
|
||||||
|
requestedSamples = Integer.MAX_VALUE;
|
||||||
|
/*
|
||||||
while (requestedSamples > 1) {
|
while (requestedSamples > 1) {
|
||||||
try {
|
try {
|
||||||
pb = new Pbuffer(1, 1, new PixelFormat(0, 0, 0, requestedSamples), null);
|
pb = new Pbuffer(1, 1, new PixelFormat(16, 0, 8, 0, requestedSamples), null);
|
||||||
} catch (LWJGLException ex) {
|
} catch (LWJGLException ex) {
|
||||||
if (ex.getMessage().startsWith("Failed to find ARB pixel format")) {
|
if (ex.getMessage().startsWith("Failed to find ARB pixel format")) {
|
||||||
// Unsupported format, so continue.
|
// Unsupported format, so continue.
|
||||||
requestedSamples /= 2;
|
requestedSamples = FastMath.nearestPowerOfTwo(requestedSamples / 2);
|
||||||
} else {
|
} else {
|
||||||
// Something else went wrong ..
|
// Something else went wrong ..
|
||||||
return Integer.MAX_VALUE;
|
return Integer.MAX_VALUE;
|
||||||
@ -160,6 +182,15 @@ public abstract class LwjglContext implements JmeContext {
|
|||||||
pb = null;
|
pb = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}*/
|
||||||
|
} finally {
|
||||||
|
if (displayWasCurrent) {
|
||||||
|
try {
|
||||||
|
Display.makeCurrent();
|
||||||
|
} catch (LWJGLException ex) {
|
||||||
|
listener.handleError("Failed to make display current after checking samples", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return requestedSamples;
|
return requestedSamples;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user