aboutsummaryrefslogtreecommitdiffstats
path: root/src/classes
diff options
context:
space:
mode:
Diffstat (limited to 'src/classes')
-rw-r--r--src/classes/linux/javax/media/j3d/NativeConfigTemplate3D.java20
-rw-r--r--src/classes/share/javax/media/j3d/Renderer.java16
-rw-r--r--src/classes/solaris/javax/media/j3d/NativeConfigTemplate3D.java20
-rw-r--r--src/classes/win32/javax/media/j3d/NativeConfigTemplate3D.java60
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