aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pom.xml6
-rw-r--r--src/main/java/org/jogamp/java3d/CanvasViewCache.java14
-rw-r--r--src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java1
-rw-r--r--src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java43
-rw-r--r--src/main/java/org/jogamp/java3d/JoglPipeline.java7
-rw-r--r--src/main/java/org/jogamp/java3d/MasterControl.java13
6 files changed, 56 insertions, 28 deletions
diff --git a/pom.xml b/pom.xml
index a7b65f5..d42290c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
<groupId>org.jogamp.java3d</groupId>
<artifactId>java3d-core</artifactId>
- <version>1.7.0</version>
+ <version>1.7.1</version>
<name>Java 3D Core</name>
<description>3D Graphics API for the Java Platform</description>
@@ -97,10 +97,10 @@
</scm>
<properties>
- <jogamp.version>2.3.2</jogamp.version>
+ <jogamp.version>2.4.0</jogamp.version>
<!-- NB: Token values for filtering VersionInfo.java. -->
- <version_base>1.7.0</version_base>
+ <version_base>1.7.1</version_base>
<build.spec.title>${project.name}</build.spec.title>
<build.spec.vendor></build.spec.vendor>
<build.impl.title>${project.name}</build.impl.title>
diff --git a/src/main/java/org/jogamp/java3d/CanvasViewCache.java b/src/main/java/org/jogamp/java3d/CanvasViewCache.java
index 91b42ae..a6b4e2c 100644
--- a/src/main/java/org/jogamp/java3d/CanvasViewCache.java
+++ b/src/main/java/org/jogamp/java3d/CanvasViewCache.java
@@ -589,9 +589,11 @@ class CanvasViewCache extends Object {
// 0.666x0.666 = 0.444 scaling. This is not a Java3D issue.
try {
final Graphics2D g2d = (Graphics2D) canvas.getGraphics();
- final AffineTransform t = g2d.getTransform();
- hiDPIXScale = t.getScaleX();
- hiDPIYScale = t.getScaleY();
+ if (g2d != null) {
+ final AffineTransform t = g2d.getTransform();
+ hiDPIXScale = t.getScaleX();
+ hiDPIYScale = t.getScaleY();
+ }
} catch (IllegalComponentStateException e) {}
metersPerPixelX = screenViewCache.metersPerPixelX;
@@ -2020,9 +2022,9 @@ class CanvasViewCache extends Object {
// Note: screenPt is in image plate coords, at z=0
// Transform from image plate coords to screen coords
- pixelLocation.x = (screenX / screenViewCache.metersPerPixelX) - canvasX;
- pixelLocation.y = screenViewCache.screenHeight - 1 -
- (screenY / screenViewCache.metersPerPixelY) - canvasY;
+ pixelLocation.x = ((screenX / screenViewCache.metersPerPixelX) - canvasX) / hiDPIXScale;
+ pixelLocation.y = (screenViewCache.screenHeight - 1 -
+ (screenY / screenViewCache.metersPerPixelY) - canvasY) / hiDPIYScale;
//System.err.println("pixelLocation = " + pixelLocation);
}
diff --git a/src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java b/src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java
index b9d8066..d702517 100644
--- a/src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java
+++ b/src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java
@@ -32,7 +32,6 @@ abstract class Jogl2es2DEPPipeline extends Pipeline
+ "Coordinates must be defined and float type, colors must be float type, if defined. \n"//
+ "Decaling is not supported. \n"//
+ "Model Clip is not supported and must be reimplemented in shaders \n"//
- + "QuadArray or IndexedQuadArray cannot be supported. \n"//
+ "Texture Coordinate generation ignored, must be done in shaders. \n" //
+ "Texture Lod, Filter, Sharpen and Combine cannot be supported. \n"//
+ "Texture3D cannot be supported. \n"//
diff --git a/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java b/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java
index 934e9b8..e9e12e0 100644
--- a/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java
+++ b/src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java
@@ -121,6 +121,9 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
// setPosition on a GLWindow can lock-up if true
// also with on and offscreen must be false too
private static final boolean NEVER_RELEASE_CONTEXT = false;
+
+
+ private static boolean quadArrayCautionPrinted = false;
/**
* Constructor for singleton JoglPipeline instance
@@ -761,7 +764,14 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
switch (geo_type)
{
case GeometryRetained.GEO_TYPE_QUAD_SET:
- System.err.println("QuadArray.\n" + VALID_FORMAT_MESSAGE);
+ if(!quadArrayCautionPrinted) {
+ System.err.println("QuadArray will render incorrectly, consider using TriangleArray. If you have the java3d-utils in the buildpath you can convert like this:");
+ System.err.println("GeometryInfo gi = new GeometryInfo(quadArray);");
+ System.err.println("gi.convertToIndexedTriangles(); ");
+ System.err.println("GeometryArray ga = gi.getIndexedGeometryArray(true, true, true, true, true);");
+ quadArrayCautionPrinted = true;
+ }
+ //fallthrough
case GeometryRetained.GEO_TYPE_TRI_SET:
gl.glDrawArrays(GL2ES2.GL_TRIANGLES, 0, vcount);
break;
@@ -1468,7 +1478,14 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
switch (geo_type)
{
case GeometryRetained.GEO_TYPE_QUAD_SET:
- System.err.println("QuadArray.\n" + VALID_FORMAT_MESSAGE);
+ if(!quadArrayCautionPrinted) {
+ System.err.println("QuadArray will render incorrectly, consider using TriangleArray. If you have the java3d-utils in the buildpath you can convert like this:");
+ System.err.println("GeometryInfo gi = new GeometryInfo(quadArray);");
+ System.err.println("gi.convertToIndexedTriangles(); ");
+ System.err.println("GeometryArray ga = gi.getIndexedGeometryArray(true, true, true, true, true);");
+ quadArrayCautionPrinted = true;
+ }
+ //fallthrough
case GeometryRetained.GEO_TYPE_TRI_SET:
gl.glDrawArrays(GL2ES2.GL_TRIANGLES, 0, vertexCount);
break;
@@ -2110,7 +2127,14 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
switch (geo_type)
{
case GeometryRetained.GEO_TYPE_INDEXED_QUAD_SET:
- throw new UnsupportedOperationException("QuadArray.\n" + VALID_FORMAT_MESSAGE);
+ if(!quadArrayCautionPrinted) {
+ System.err.println("QuadArray will render incorrectly, consider using TriangleArray. If you have the java3d-utils in the buildpath you can convert like this:");
+ System.err.println("GeometryInfo gi = new GeometryInfo(quadArray);");
+ System.err.println("gi.convertToIndexedTriangles(); ");
+ System.err.println("GeometryArray ga = gi.getIndexedGeometryArray(true, true, true, true, true);");
+ quadArrayCautionPrinted = true;
+ }
+ //fallthrough
case GeometryRetained.GEO_TYPE_INDEXED_TRI_SET:
gl.glDrawElements(GL2ES2.GL_TRIANGLES, indexCount, GL2ES2.GL_UNSIGNED_SHORT, 0);
break;
@@ -2886,7 +2910,14 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
switch (geo_type)
{
case GeometryRetained.GEO_TYPE_INDEXED_QUAD_SET:
- throw new UnsupportedOperationException("QuadArray.\n" + VALID_FORMAT_MESSAGE);
+ if(!quadArrayCautionPrinted) {
+ System.err.println("QuadArray will render incorrectly, consider using TriangleArray. If you have the java3d-utils in the buildpath you can convert like this:");
+ System.err.println("GeometryInfo gi = new GeometryInfo(quadArray);");
+ System.err.println("gi.convertToIndexedTriangles(); ");
+ System.err.println("GeometryArray ga = gi.getIndexedGeometryArray(true, true, true, true, true);");
+ quadArrayCautionPrinted = true;
+ }
+ //fallthrough
case GeometryRetained.GEO_TYPE_INDEXED_TRI_SET:
gl.glDrawElements(GL2ES2.GL_TRIANGLES, validIndexCount, GL2ES2.GL_UNSIGNED_SHORT, 0);
break;
@@ -6844,8 +6875,8 @@ class Jogl2es2Pipeline extends Jogl2es2DEPPipeline
gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
gl.glBindTexture(GL.GL_TEXTURE_2D, objectId);
// set up texture parameter
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);
diff --git a/src/main/java/org/jogamp/java3d/JoglPipeline.java b/src/main/java/org/jogamp/java3d/JoglPipeline.java
index 0b727a6..df6ef80 100644
--- a/src/main/java/org/jogamp/java3d/JoglPipeline.java
+++ b/src/main/java/org/jogamp/java3d/JoglPipeline.java
@@ -7701,8 +7701,8 @@ static boolean hasFBObjectSizeChanged(JoglDrawable jdraw, int width, int height)
gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
gl.glBindTexture(GL.GL_TEXTURE_2D, objectId);
// set up texture parameter
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
- gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_S, GL.GL_REPEAT);
gl.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_WRAP_T, GL.GL_REPEAT);
@@ -8373,7 +8373,8 @@ static boolean hasFBObjectSizeChanged(JoglDrawable jdraw, int width, int height)
if (gct.getSceneAntialiasing() != GraphicsConfigTemplate.UNNECESSARY &&
gct.getDoubleBuffer() != GraphicsConfigTemplate.UNNECESSARY) {
caps.setSampleBuffers(true);
- caps.setNumSamples(2);
+ int numSamples = MasterControl.getIntegerProperty("j3d.numSamples", 2);
+ caps.setNumSamples(numSamples);
} else {
caps.setSampleBuffers(false);
caps.setNumSamples(0);
diff --git a/src/main/java/org/jogamp/java3d/MasterControl.java b/src/main/java/org/jogamp/java3d/MasterControl.java
index a7495cf..2d4f573 100644
--- a/src/main/java/org/jogamp/java3d/MasterControl.java
+++ b/src/main/java/org/jogamp/java3d/MasterControl.java
@@ -806,20 +806,15 @@ private static String getProperty(final String prop) {
});
}
- static int getIntegerProperty(String prop, int defaultValue)
- {
+ static int getIntegerProperty(String prop, int defaultValue) {
int value = defaultValue;
String propValue = getProperty(prop);
- if (propValue != null)
- {
- try
- {
+ if (propValue != null) {
+ try {
value = Integer.parseInt(propValue);
}
- catch (NumberFormatException e)
- {
- }
+ catch (NumberFormatException e) { }
}
if (J3dDebug.debug)
System.err.println("Java 3D: " + prop + "=" + value);