diff options
Diffstat (limited to 'src/classes')
4 files changed, 56 insertions, 60 deletions
diff --git a/src/classes/linux/javax/media/j3d/NativeConfigTemplate3D.java b/src/classes/linux/javax/media/j3d/NativeConfigTemplate3D.java index 7e36e71..30cab7c 100644 --- a/src/classes/linux/javax/media/j3d/NativeConfigTemplate3D.java +++ b/src/classes/linux/javax/media/j3d/NativeConfigTemplate3D.java @@ -60,7 +60,7 @@ class NativeConfigTemplate3D { native boolean isStereoAvailable(long display, int screen, int vid); native boolean isDoubleBufferAvailable(long display, int screen, int vid); native boolean isSceneAntialiasingAccumAvailable(long display, int screen, int vid); - native boolean isSceneAntialiasingMultiSamplesAvailable(long display, int screen, int vid); + native boolean isSceneAntialiasingMultisampleAvailable(long display, int screen, int vid); /* @@ -201,7 +201,9 @@ class NativeConfigTemplate3D { // Return whether stereo is available. - boolean hasStereo(GraphicsConfiguration gc) { + boolean hasStereo(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -214,7 +216,9 @@ class NativeConfigTemplate3D { } // Return whether a double buffer is available. - boolean hasDoubleBuffer(GraphicsConfiguration gc) { + boolean hasDoubleBuffer(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -227,7 +231,9 @@ class NativeConfigTemplate3D { } // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingAccum(GraphicsConfiguration gc) { + boolean hasSceneAntialiasingAccum(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -241,7 +247,9 @@ class NativeConfigTemplate3D { // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingMultiSamples(GraphicsConfiguration gc) { + boolean hasSceneAntialiasingMultisample(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -250,7 +258,7 @@ class NativeConfigTemplate3D { int screen = nativeScreenInfo.getScreen(); int vid = ((X11GraphicsConfig)gc).getVisual(); - return isSceneAntialiasingMultiSamplesAvailable(display, screen, vid); + return isSceneAntialiasingMultisampleAvailable(display, screen, vid); } // Ensure that the native libraries are loaded diff --git a/src/classes/share/javax/media/j3d/Renderer.java b/src/classes/share/javax/media/j3d/Renderer.java index cd47249..fd560cd 100644 --- a/src/classes/share/javax/media/j3d/Renderer.java +++ b/src/classes/share/javax/media/j3d/Renderer.java @@ -380,7 +380,6 @@ class Renderer extends J3dThread { Integer reqType = (Integer) m[nmesg].args[2]; Canvas3D c = (Canvas3D) secondArg; if (reqType == MasterControl.SET_GRAPHICSCONFIG_FEATURES) { - GraphicsConfiguration gc = c.graphicsConfiguration; NativeConfigTemplate3D nct = GraphicsConfigTemplate3D.nativeTemplate; if (c.offScreen) { @@ -389,16 +388,17 @@ class Renderer extends J3dThread { c.doubleBufferAvailable = false; c.stereoAvailable = false; } else { - c.doubleBufferAvailable = nct.hasDoubleBuffer(gc); - c.stereoAvailable = nct.hasStereo(gc); + c.doubleBufferAvailable = nct.hasDoubleBuffer(c); + c.stereoAvailable = nct.hasStereo(c); } c.sceneAntialiasingMultiSamplesAvailable = - nct.hasSceneAntialiasingMultiSamples(gc); + nct.hasSceneAntialiasingMultisample(c); + if (c.sceneAntialiasingMultiSamplesAvailable) { c.sceneAntialiasingAvailable = true; } else { c.sceneAntialiasingAvailable = - nct.hasSceneAntialiasingAccum(gc); + nct.hasSceneAntialiasingAccum(c); } GraphicsConfigTemplate3D.runMonitor(J3dThread.NOTIFY); } else if (reqType == MasterControl.SET_QUERYPROPERTIES){ @@ -935,6 +935,7 @@ class Renderer extends J3dThread { // full screen anti-aliasing setup if (canvas.view.getSceneAntialiasingEnable() && canvas.sceneAntialiasingAvailable) { + if (!VirtualUniverse.mc.isD3D() && ((canvas.extensionsSupported & Canvas3D.ARB_MULTISAMPLE) == 0) || !canvas.sceneAntialiasingMultiSamplesAvailable) { @@ -981,13 +982,18 @@ class Renderer extends J3dThread { } } } else { + if (!canvas.antialiasingSet) { + // System.out.println("Renderer : Enable FullSceneAntialiasing"); + canvas.setFullSceneAntialiasing(canvas.ctx, true); canvas.antialiasingSet = true; } } } else { + if (canvas.antialiasingSet) { + // System.out.println("Renderer : Disable SceneAntialiasing"); canvas.setFullSceneAntialiasing(canvas.ctx, false); canvas.antialiasingSet = false; } diff --git a/src/classes/solaris/javax/media/j3d/NativeConfigTemplate3D.java b/src/classes/solaris/javax/media/j3d/NativeConfigTemplate3D.java index d892a53..158c87f 100644 --- a/src/classes/solaris/javax/media/j3d/NativeConfigTemplate3D.java +++ b/src/classes/solaris/javax/media/j3d/NativeConfigTemplate3D.java @@ -52,7 +52,7 @@ class NativeConfigTemplate3D { native boolean isStereoAvailable(long display, int screen, int vid); native boolean isDoubleBufferAvailable(long display, int screen, int vid); native boolean isSceneAntialiasingAccumAvailable(long display, int screen, int vid); - native boolean isSceneAntialiasingMultiSamplesAvailable(long display, int screen, int vid); + native boolean isSceneAntialiasingMultisampleAvailable(long display, int screen, int vid); /* @@ -192,7 +192,9 @@ class NativeConfigTemplate3D { // Return whether stereo is available. - boolean hasStereo(GraphicsConfiguration gc) { + boolean hasStereo(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -205,7 +207,9 @@ class NativeConfigTemplate3D { } // Return whether a double buffer is available. - boolean hasDoubleBuffer(GraphicsConfiguration gc) { + boolean hasDoubleBuffer(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -218,7 +222,9 @@ class NativeConfigTemplate3D { } // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingAccum(GraphicsConfiguration gc) { + boolean hasSceneAntialiasingAccum(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -232,7 +238,9 @@ class NativeConfigTemplate3D { // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingMultiSamples(GraphicsConfiguration gc) { + boolean hasSceneAntialiasingMultisample(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + X11GraphicsDevice gd = (X11GraphicsDevice)((X11GraphicsConfig)gc).getDevice(); NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); @@ -241,7 +249,7 @@ class NativeConfigTemplate3D { int screen = nativeScreenInfo.getScreen(); int vid = ((X11GraphicsConfig)gc).getVisual(); - return isSceneAntialiasingMultiSamplesAvailable(display, screen, vid); + return isSceneAntialiasingMultisampleAvailable(display, screen, vid); } // Ensure that the native libraries are loaded diff --git a/src/classes/win32/javax/media/j3d/NativeConfigTemplate3D.java b/src/classes/win32/javax/media/j3d/NativeConfigTemplate3D.java index 2759ea5..eca5def 100644 --- a/src/classes/win32/javax/media/j3d/NativeConfigTemplate3D.java +++ b/src/classes/win32/javax/media/j3d/NativeConfigTemplate3D.java @@ -49,10 +49,10 @@ class NativeConfigTemplate3D { static native void freePixelFormatInfo(long pFormatInfo); // Native methods to return whether a particular attribute is available - native boolean isStereoAvailable(long ctx, long display, int screen, int pixelFormat); - native boolean isDoubleBufferAvailable(long ctx, long display, int screen, int pixelFormat); - native boolean isSceneAntialiasingAccumAvailable(long ctx, long display, int screen, int pixelFormat); - native boolean isSceneAntialiasingMultiSamplesAvailable(long ctx, long display, int screen, int pixelFormat); + native boolean isStereoAvailable(long pFormatInfo, boolean offScreen); + native boolean isDoubleBufferAvailable(long pFormatInfo, boolean offScreen); + native boolean isSceneAntialiasingAccumAvailable(long pFormatInfo, boolean offScreen); + native boolean isSceneAntialiasingMultisampleAvailable(long pFormatInfo, boolean offScreen, int screen); /** * Chooses the best PixelFormat for Java 3D apps. @@ -179,56 +179,30 @@ class NativeConfigTemplate3D { // Return whether stereo is available. - boolean hasStereo(GraphicsConfiguration gc) { - Win32GraphicsDevice gd = - (Win32GraphicsDevice)((Win32GraphicsConfig)gc).getDevice(); - NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); - - int display = nativeScreenInfo.getDisplay(); - int screen = nativeScreenInfo.getScreen(); - // Temporary until Win32 GraphicsConfig stuff complete - int pixelFormat = ((J3dGraphicsConfig) gc).getPixelFormat(); - - return isStereoAvailable(0, display, screen, pixelFormat); + boolean hasStereo(Canvas3D c3d) { + return isStereoAvailable(c3d.fbConfig, c3d.offScreen); } // Return whether a double buffer is available. - boolean hasDoubleBuffer(GraphicsConfiguration gc) { - Win32GraphicsDevice gd = - (Win32GraphicsDevice)((Win32GraphicsConfig)gc).getDevice(); - NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); - int display = nativeScreenInfo.getDisplay(); - int screen = nativeScreenInfo.getScreen(); - // Temporary until Win32 GraphicsConfig stuff complete - int pixelFormat = ((J3dGraphicsConfig) gc).getPixelFormat(); - - return isDoubleBufferAvailable(0, display, screen, pixelFormat); + boolean hasDoubleBuffer(Canvas3D c3d) { + return isDoubleBufferAvailable(c3d.fbConfig, c3d.offScreen); } // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingAccum(GraphicsConfiguration gc) { - Win32GraphicsDevice gd = - (Win32GraphicsDevice)((Win32GraphicsConfig)gc).getDevice(); - NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); - int display = nativeScreenInfo.getDisplay(); - int screen = nativeScreenInfo.getScreen(); - // Temporary until Win32 GraphicsConfig stuff complete - int pixelFormat = ((J3dGraphicsConfig) gc).getPixelFormat(); - - return isSceneAntialiasingAccumAvailable(0, display, screen, pixelFormat); + boolean hasSceneAntialiasingAccum(Canvas3D c3d) { + return isSceneAntialiasingAccumAvailable(c3d.fbConfig, c3d.offScreen); } // Return whether scene antialiasing is available. - boolean hasSceneAntialiasingMultiSamples(GraphicsConfiguration gc) { + boolean hasSceneAntialiasingMultisample(Canvas3D c3d) { + GraphicsConfiguration gc = c3d.graphicsConfiguration; + Win32GraphicsDevice gd = - (Win32GraphicsDevice)((Win32GraphicsConfig)gc).getDevice(); - NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); - int display = nativeScreenInfo.getDisplay(); + (Win32GraphicsDevice)((Win32GraphicsConfig)gc).getDevice(); + NativeScreenInfo nativeScreenInfo = new NativeScreenInfo(gd); int screen = nativeScreenInfo.getScreen(); - // Temporary until Win32 GraphicsConfig stuff complete - int pixelFormat = ((J3dGraphicsConfig) gc).getPixelFormat(); - - return isSceneAntialiasingMultiSamplesAvailable(0, display, screen, pixelFormat); + /* Fix to issue 77 */ + return isSceneAntialiasingMultisampleAvailable(c3d.fbConfig, c3d.offScreen, screen); } // Ensure that the native libraries are loaded |