aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorPhilip Jordan <[email protected]>2019-10-25 18:16:43 +1300
committerPhilip Jordan <[email protected]>2019-10-25 18:16:43 +1300
commitc05f0d55e448af9d956cae051cfffdbf2053677d (patch)
tree372cf54bfcbee4f96d3063e8ed231c40ccdd7b9e /src/main
parent7e122e7557ad71f0ea76ea248032235c19b00d25 (diff)
QuadArray usage warning improved to advise how to convert easily.
QuadArrays now render as triangle arrays in order to show where the issue is.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/jogamp/java3d/Jogl2es2DEPPipeline.java1
-rw-r--r--src/main/java/org/jogamp/java3d/Jogl2es2Pipeline.java39
2 files changed, 35 insertions, 5 deletions
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..de2af22 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;