aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/graph/curve
diff options
context:
space:
mode:
Diffstat (limited to 'src/jogl/classes/jogamp/graph/curve')
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/jogamp/graph/curve/opengl/RegionFactory.java20
-rw-r--r--[-rwxr-xr-x]src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java51
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java19
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/TextRendererImpl01.java49
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PES2.java209
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/VBORegionSPES2.java37
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/AttributeNames.java12
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/UniformNames.java2
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass-weight.fp (renamed from src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-xxx.fp)9
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass.fp (renamed from src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-xxx.fp)9
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass-weight.fp (renamed from src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-xxx.fp)17
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass.fp (renamed from src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-xxx.fp)17
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2-merged.vp19
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2.vp9
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-gl2.vp6
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01.vp (renamed from src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-xxx.vp)5
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2-merged.fp52
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2.fp13
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-gl2.fp6
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-es2.fp14
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-gl2.fp6
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-es2.fp14
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-gl2.fp6
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-es2.fp14
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-gl2.fp6
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/CDTriangulator2D.java35
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/GraphOutline.java10
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/GraphVertex.java12
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/HEdge.java12
-rw-r--r--src/jogl/classes/jogamp/graph/curve/tess/Loop.java36
-rw-r--r--src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java38
-rw-r--r--src/jogl/classes/jogamp/graph/curve/text/GlyphString.java2
32 files changed, 333 insertions, 433 deletions
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/RegionFactory.java b/src/jogl/classes/jogamp/graph/curve/opengl/RegionFactory.java
index 1f59b5805..515583b14 100755..100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/RegionFactory.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/RegionFactory.java
@@ -30,20 +30,20 @@ package jogamp.graph.curve.opengl;
import com.jogamp.graph.curve.Region;
import com.jogamp.graph.curve.opengl.GLRegion;
-/** RegionFactory to create a Context specific Region implementation.
- *
+/** RegionFactory to create a Context specific Region implementation.
+ *
* @see GLRegion
*/
public class RegionFactory {
-
+
/**
* Create a Region using the passed render mode
- *
+ *
* <p> In case {@link Region#VBAA_RENDERING_BIT} is being requested the default texture unit
* {@link Region#TWO_PASS_DEFAULT_TEXTURE_UNIT} is being used.</p>
- *
+ *
* @param rs the RenderState to be used
- * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT}, {@link Region#VBAA_RENDERING_BIT}
+ * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT}, {@link Region#VBAA_RENDERING_BIT}
*/
public static GLRegion create(int renderModes) {
if( 0 != ( Region.VBAA_RENDERING_BIT & renderModes ) ){
@@ -53,18 +53,18 @@ public class RegionFactory {
return new VBORegionSPES2(renderModes);
}
}
-
+
/** Create a Single Pass Region using the passed render mode
- * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT},
+ * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT},
* {@link Region#VBAA_RENDERING_BIT}
* @return
*/
public static GLRegion createSinglePass(int renderModes) {
return new VBORegionSPES2(renderModes);
}
-
+
/** Create a Two Pass (VBAA) Region using the passed render mode
- * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT},
+ * @param renderModes bit-field of modes, e.g. {@link Region#VARIABLE_CURVE_WEIGHT_BIT},
* {@link Region#VBAA_RENDERING_BIT}
* @return
*/
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java b/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java
index e6001f4c2..51198fd75 100755..100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java
@@ -36,6 +36,7 @@ import com.jogamp.graph.curve.Region;
import com.jogamp.graph.curve.opengl.GLRegion;
import com.jogamp.graph.curve.opengl.RegionRenderer;
import com.jogamp.graph.curve.opengl.RenderState;
+import com.jogamp.opengl.GLExtensions;
import com.jogamp.opengl.util.glsl.ShaderCode;
import com.jogamp.opengl.util.glsl.ShaderProgram;
import com.jogamp.opengl.util.glsl.ShaderState;
@@ -43,38 +44,44 @@ import com.jogamp.opengl.util.glsl.ShaderState;
public class RegionRendererImpl01 extends RegionRenderer {
public RegionRendererImpl01(RenderState rs, int renderModes) {
super(rs, renderModes);
-
+
}
-
+
@Override
- protected String getFragmentShaderName(GL2ES2 gl) {
- final String type = Region.isNonUniformWeight(renderModes) ? "02" : "01" ;
- final String pass = Region.isVBAA(renderModes) ? "b" : "a" ;
- return "curverenderer" + type + pass + getShaderGLVersionSuffix(gl);
- }
-
protected boolean initShaderProgram(GL2ES2 gl) {
final ShaderState st = rs.getShaderState();
-
- ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, RegionRendererImpl01.class, "shader",
- "shader/bin", getVertexShaderName(gl), false);
- ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, RegionRendererImpl01.class, "shader",
- "shader/bin", getFragmentShaderName(gl), false);
-
- ShaderProgram sp = new ShaderProgram();
+
+ final ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, RegionRendererImpl01.class, "shader",
+ "shader/bin", getVertexShaderName(), true);
+ final ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, RegionRendererImpl01.class, "shader",
+ "shader/bin", getFragmentShaderName(), true);
+ rsVp.defaultShaderCustomization(gl, true, true);
+ // rsFp.defaultShaderCustomization(gl, true, true);
+ int pos = rsFp.addGLSLVersion(gl);
+ if( gl.isGLES() ) {
+ pos = rsFp.insertShaderSource(0, pos, ShaderCode.createExtensionDirective(GLExtensions.OES_standard_derivatives, ShaderCode.ENABLE));
+ }
+ final String rsFpDefPrecision = getFragmentShaderPrecision(gl);
+ if( null != rsFpDefPrecision ) {
+ rsFp.insertShaderSource(0, pos, rsFpDefPrecision);
+ }
+
+ final ShaderProgram sp = new ShaderProgram();
sp.add(rsVp);
sp.add(rsFp);
- sp.init(gl);
- st.attachShaderProgram(gl, sp, false);
+ if( !sp.init(gl) ) {
+ throw new GLException("RegionRenderer: Couldn't init program: "+sp);
+ }
+ st.attachShaderProgram(gl, sp, false);
st.bindAttribLocation(gl, AttributeNames.VERTEX_ATTR_IDX, AttributeNames.VERTEX_ATTR_NAME);
- st.bindAttribLocation(gl, AttributeNames.TEXCOORD_ATTR_IDX, AttributeNames.TEXCOORD_ATTR_NAME);
-
+ st.bindAttribLocation(gl, AttributeNames.TEXCOORD_ATTR_IDX, AttributeNames.TEXCOORD_ATTR_NAME);
+
if(!sp.link(gl, System.err)) {
throw new GLException("RegionRenderer: Couldn't link program: "+sp);
- }
+ }
st.useProgram(gl, true);
-
+
if(DEBUG) {
System.err.println("RegionRendererImpl01 initialized: " + Thread.currentThread()+" "+st);
}
@@ -89,5 +96,5 @@ public class RegionRendererImpl01 extends RegionRenderer {
@Override
protected void drawImpl(GL2ES2 gl, Region region, int[] texSize) {
((GLRegion)region).draw(gl, rs, vp_width, vp_height, texSize);
- }
+ }
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java b/src/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java
index 51356ca13..68f926b0a 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/RenderStateImpl.java
@@ -38,9 +38,9 @@ import com.jogamp.graph.geom.Vertex;
import com.jogamp.opengl.util.PMVMatrix;
import com.jogamp.opengl.util.glsl.ShaderState;
-public class RenderStateImpl extends RenderState {
+public class RenderStateImpl extends RenderState {
/**
- * weight is equivalent to the
+ * weight is equivalent to the
* global off-curve vertex weight.
* TODO: change to per vertex
*/
@@ -50,7 +50,7 @@ public class RenderStateImpl extends RenderState {
public RenderStateImpl(ShaderState st, Vertex.Factory<? extends Vertex> pointFactory, PMVMatrix pmvMatrix) {
super(st, pointFactory, pmvMatrix);
-
+
gcu_Weight = new GLUniformData(UniformNames.gcu_Weight, 1.0f);
st.ownUniform(gcu_PMVMatrix);
gcu_Alpha = new GLUniformData(UniformNames.gcu_Alpha, 1.0f);
@@ -60,15 +60,14 @@ public class RenderStateImpl extends RenderState {
// gcu_Strength = new GLUniformData(UniformNames.gcu_Strength, 3.0f);
// st.ownUniform(gcu_Strength);
}
-
- public RenderStateImpl(ShaderState st, Vertex.Factory<? extends Vertex> pointFactory) {
- this(st, pointFactory, new PMVMatrix());
- }
-
+
+ @Override
public final GLUniformData getWeight() { return gcu_Weight; }
+ @Override
public final GLUniformData getAlpha() { return gcu_Alpha; }
+ @Override
public final GLUniformData getColorStatic() { return gcu_ColorStatic; }
//public final GLUniformData getStrength() { return gcu_Strength; }
-
-
+
+
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/TextRendererImpl01.java b/src/jogl/classes/jogamp/graph/curve/opengl/TextRendererImpl01.java
index f8b1b090b..c3c7e0cac 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/TextRendererImpl01.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/TextRendererImpl01.java
@@ -36,33 +36,46 @@ import jogamp.graph.curve.text.GlyphString;
import com.jogamp.graph.curve.opengl.RenderState;
import com.jogamp.graph.curve.opengl.TextRenderer;
import com.jogamp.graph.font.Font;
+import com.jogamp.opengl.GLExtensions;
import com.jogamp.opengl.util.glsl.ShaderCode;
import com.jogamp.opengl.util.glsl.ShaderProgram;
import com.jogamp.opengl.util.glsl.ShaderState;
-public class TextRendererImpl01 extends TextRenderer {
+public class TextRendererImpl01 extends TextRenderer {
public TextRendererImpl01(RenderState rs, int type) {
- super(rs, type);
+ super(rs, type);
}
-
+
@Override
protected boolean initShaderProgram(GL2ES2 gl){
final ShaderState st = rs.getShaderState();
- ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, TextRendererImpl01.class, "shader",
- "shader/bin", getVertexShaderName(gl), false);
- ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, TextRendererImpl01.class, "shader",
- "shader/bin", getFragmentShaderName(gl), false);
-
- ShaderProgram sp = new ShaderProgram();
+ final ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, TextRendererImpl01.class, "shader",
+ "shader/bin", getVertexShaderName(), true);
+ final ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, TextRendererImpl01.class, "shader",
+ "shader/bin", getFragmentShaderName(), true);
+ rsVp.defaultShaderCustomization(gl, true, true);
+ // rsFp.defaultShaderCustomization(gl, true, true);
+ int pos = rsFp.addGLSLVersion(gl);
+ if( gl.isGLES() ) {
+ pos = rsFp.insertShaderSource(0, pos, ShaderCode.createExtensionDirective(GLExtensions.OES_standard_derivatives, ShaderCode.ENABLE));
+ }
+ final String rsFpDefPrecision = getFragmentShaderPrecision(gl);
+ if( null != rsFpDefPrecision ) {
+ rsFp.insertShaderSource(0, pos, rsFpDefPrecision);
+ }
+
+ final ShaderProgram sp = new ShaderProgram();
sp.add(rsVp);
sp.add(rsFp);
-
- sp.init(gl);
- st.attachShaderProgram(gl, sp, false);
+
+ if( !sp.init(gl) ) {
+ throw new GLException("RegionRenderer: Couldn't init program: "+sp);
+ }
+ st.attachShaderProgram(gl, sp, false);
st.bindAttribLocation(gl, AttributeNames.VERTEX_ATTR_IDX, AttributeNames.VERTEX_ATTR_NAME);
- st.bindAttribLocation(gl, AttributeNames.TEXCOORD_ATTR_IDX, AttributeNames.TEXCOORD_ATTR_NAME);
-
+ st.bindAttribLocation(gl, AttributeNames.TEXCOORD_ATTR_IDX, AttributeNames.TEXCOORD_ATTR_NAME);
+
if(!sp.link(gl, System.err)) {
throw new GLException("TextRendererImpl01: Couldn't link program: "+sp);
}
@@ -70,15 +83,15 @@ public class TextRendererImpl01 extends TextRenderer {
if(DEBUG) {
System.err.println("TextRendererImpl01 initialized: " + Thread.currentThread()+" "+st);
- }
+ }
return true;
}
-
+
@Override
protected void destroyImpl(GL2ES2 gl) {
super.destroyImpl(gl);
}
-
+
@Override
public void drawString3D(GL2ES2 gl, Font font, String str, int fontSize, int[/*1*/] texSize) {
if(!isInitialized()){
@@ -89,7 +102,7 @@ public class TextRendererImpl01 extends TextRenderer {
glyphString = createString(gl, font, fontSize, str);
addCachedGlyphString(gl, font, str, fontSize, glyphString);
}
-
+
glyphString.renderString3D(gl, rs, vp_width, vp_height, texSize);
}
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PES2.java b/src/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PES2.java
index 804e9ee14..77c862ed4 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PES2.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PES2.java
@@ -30,9 +30,8 @@ package jogamp.graph.curve.opengl;
import java.nio.FloatBuffer;
import javax.media.opengl.GL2ES2;
-// FIXME: Subsume GL2GL3.GL_DRAW_FRAMEBUFFER -> GL2ES2.GL_DRAW_FRAMEBUFFER !
+// FIXME: Subsume GL2GL3.GL_DRAW_FRAMEBUFFER -> GL2ES2.GL_DRAW_FRAMEBUFFER !
import javax.media.opengl.GL;
-import javax.media.opengl.GLException;
import javax.media.opengl.GLUniformData;
import javax.media.opengl.fixedfunc.GLMatrixFunc;
@@ -45,7 +44,9 @@ import com.jogamp.graph.geom.Vertex;
import com.jogamp.graph.curve.opengl.GLRegion;
import com.jogamp.graph.curve.opengl.RenderState;
-import com.jogamp.opengl.util.FBObject;
+import com.jogamp.opengl.FBObject;
+import com.jogamp.opengl.FBObject.Attachment;
+import com.jogamp.opengl.FBObject.TextureAttachment;
import com.jogamp.opengl.util.GLArrayDataServer;
import com.jogamp.opengl.util.PMVMatrix;
import com.jogamp.opengl.util.glsl.ShaderState;
@@ -57,89 +58,91 @@ public class VBORegion2PES2 extends GLRegion {
private GLArrayDataServer verticeFboAttr;
private GLArrayDataServer texCoordFboAttr;
private GLArrayDataServer indicesFbo;
-
-
+
+
private FBObject fbo;
+ private TextureAttachment texA;
private PMVMatrix fboPMVMatrix;
GLUniformData mgl_fboPMVMatrix;
-
+
private int tex_width_c = 0;
private int tex_height_c = 0;
- GLUniformData mgl_ActiveTexture;
+ GLUniformData mgl_ActiveTexture;
GLUniformData mgl_TextureSize; // if GLSL < 1.30
-
+
public VBORegion2PES2(int renderModes, int textureEngine) {
super(renderModes);
fboPMVMatrix = new PMVMatrix();
- mgl_fboPMVMatrix = new GLUniformData(UniformNames.gcu_PMVMatrix, 4, 4, fboPMVMatrix.glGetPMvMatrixf());
- mgl_ActiveTexture = new GLUniformData(UniformNames.gcu_TextureUnit, textureEngine);
+ mgl_fboPMVMatrix = new GLUniformData(UniformNames.gcu_PMVMatrix, 4, 4, fboPMVMatrix.glGetPMvMatrixf());
+ mgl_ActiveTexture = new GLUniformData(UniformNames.gcu_TextureUnit, textureEngine);
}
-
+
+ @Override
public void update(GL2ES2 gl, RenderState rs) {
if(!isDirty()) {
- return;
+ return;
}
if(null == indicesFbo) {
final int initialElementCount = 256;
final ShaderState st = rs.getShaderState();
-
- indicesFbo = GLArrayDataServer.createData(3, GL2ES2.GL_SHORT, initialElementCount, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER);
+
+ indicesFbo = GLArrayDataServer.createData(3, GL2ES2.GL_SHORT, initialElementCount, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER);
indicesFbo.puts((short) 0); indicesFbo.puts((short) 1); indicesFbo.puts((short) 3);
indicesFbo.puts((short) 1); indicesFbo.puts((short) 2); indicesFbo.puts((short) 3);
indicesFbo.seal(true);
-
- texCoordFboAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
+
+ texCoordFboAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(texCoordFboAttr, true);
- texCoordFboAttr.putf(5); texCoordFboAttr.putf(5);
- texCoordFboAttr.putf(5); texCoordFboAttr.putf(6);
- texCoordFboAttr.putf(6); texCoordFboAttr.putf(6);
- texCoordFboAttr.putf(6); texCoordFboAttr.putf(5);
+ texCoordFboAttr.putf(5); texCoordFboAttr.putf(5);
+ texCoordFboAttr.putf(5); texCoordFboAttr.putf(6);
+ texCoordFboAttr.putf(6); texCoordFboAttr.putf(6);
+ texCoordFboAttr.putf(6); texCoordFboAttr.putf(5);
texCoordFboAttr.seal(true);
-
- verticeFboAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
- false, initialElementCount, GL.GL_STATIC_DRAW);
+
+ verticeFboAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
+ false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(verticeFboAttr, true);
-
-
- indicesTxt = GLArrayDataServer.createData(3, GL2ES2.GL_SHORT, initialElementCount, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER);
-
- verticeTxtAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
+
+
+ indicesTxt = GLArrayDataServer.createData(3, GL2ES2.GL_SHORT, initialElementCount, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER);
+
+ verticeTxtAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(verticeTxtAttr, true);
-
- texCoordTxtAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
+
+ texCoordTxtAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(texCoordTxtAttr, true);
-
+
if(DEBUG_INSTANCE) {
System.err.println("VBORegion2PES2 Create: " + this);
- }
+ }
}
// process triangles
indicesTxt.seal(gl, false);
- indicesTxt.rewind();
+ indicesTxt.rewind();
for(int i=0; i<triangles.size(); i++) {
final Triangle t = triangles.get(i);
final Vertex[] t_vertices = t.getVertices();
-
+
if(t_vertices[0].getId() == Integer.MAX_VALUE){
t_vertices[0].setId(numVertices++);
t_vertices[1].setId(numVertices++);
t_vertices[2].setId(numVertices++);
-
+
vertices.add(t_vertices[0]);
vertices.add(t_vertices[1]);
vertices.add(t_vertices[2]);
-
+
indicesTxt.puts((short) t_vertices[0].getId());
indicesTxt.puts((short) t_vertices[1].getId());
indicesTxt.puts((short) t_vertices[2].getId());
} else {
indicesTxt.puts((short) t_vertices[0].getId());
indicesTxt.puts((short) t_vertices[1].getId());
- indicesTxt.puts((short) t_vertices[2].getId());
+ indicesTxt.puts((short) t_vertices[2].getId());
}
}
indicesTxt.seal(gl, true);
@@ -155,43 +158,44 @@ public class VBORegion2PES2 extends GLRegion {
final Vertex v = vertices.get(i);
verticeTxtAttr.putf(v.getX());
verticeTxtAttr.putf(v.getY());
- verticeTxtAttr.putf(v.getZ());
- box.resize(v.getX(), v.getY(), v.getZ());
-
+ verticeTxtAttr.putf(v.getZ());
+ box.resize(v.getX(), v.getY(), v.getZ());
+
final float[] tex = v.getTexCoord();
texCoordTxtAttr.putf(tex[0]);
- texCoordTxtAttr.putf(tex[1]);
+ texCoordTxtAttr.putf(tex[1]);
}
texCoordTxtAttr.seal(gl, true);
texCoordTxtAttr.enableBuffer(gl, false);
- verticeTxtAttr.seal(gl, true);
+ verticeTxtAttr.seal(gl, true);
verticeTxtAttr.enableBuffer(gl, false);
-
+
// update all bbox related data
verticeFboAttr.seal(gl, false);
- verticeFboAttr.rewind();
- verticeFboAttr.putf(box.getLow()[0]); verticeFboAttr.putf(box.getLow()[1]); verticeFboAttr.putf(box.getLow()[2]);
- verticeFboAttr.putf(box.getLow()[0]); verticeFboAttr.putf(box.getHigh()[1]); verticeFboAttr.putf(box.getLow()[2]);
- verticeFboAttr.putf(box.getHigh()[0]); verticeFboAttr.putf(box.getHigh()[1]); verticeFboAttr.putf(box.getLow()[2]);
- verticeFboAttr.putf(box.getHigh()[0]); verticeFboAttr.putf(box.getLow()[1]); verticeFboAttr.putf(box.getLow()[2]);
- verticeFboAttr.seal(gl, true);
+ verticeFboAttr.rewind();
+ verticeFboAttr.putf(box.getLow()[0]); verticeFboAttr.putf(box.getLow()[1]); verticeFboAttr.putf(box.getLow()[2]);
+ verticeFboAttr.putf(box.getLow()[0]); verticeFboAttr.putf(box.getHigh()[1]); verticeFboAttr.putf(box.getLow()[2]);
+ verticeFboAttr.putf(box.getHigh()[0]); verticeFboAttr.putf(box.getHigh()[1]); verticeFboAttr.putf(box.getLow()[2]);
+ verticeFboAttr.putf(box.getHigh()[0]); verticeFboAttr.putf(box.getLow()[1]); verticeFboAttr.putf(box.getLow()[2]);
+ verticeFboAttr.seal(gl, true);
verticeFboAttr.enableBuffer(gl, false);
-
+
fboPMVMatrix.glMatrixMode(GLMatrixFunc.GL_PROJECTION);
fboPMVMatrix.glLoadIdentity();
fboPMVMatrix.glOrthof(box.getLow()[0], box.getHigh()[0], box.getLow()[1], box.getHigh()[1], -1, 1);
-
+
// push data 2 GPU ..
indicesFbo.seal(gl, true);
indicesFbo.enableBuffer(gl, false);
-
+
setDirty(false);
-
+
// the buffers were disabled, since due to real/fbo switching and other vbo usage
}
-
+
int[] maxTexSize = new int[] { -1 } ;
-
+
+ @Override
protected void drawImpl(GL2ES2 gl, RenderState rs, int vp_width, int vp_height, int[/*1*/] texWidth) {
if(vp_width <=0 || vp_height <= 0 || null==texWidth || texWidth[0] <= 0){
renderRegion(gl);
@@ -203,76 +207,73 @@ public class VBORegion2PES2 extends GLRegion {
if(texWidth[0] > maxTexSize[0]) {
texWidth[0] = maxTexSize[0]; // clip to max - write-back user value!
}
- renderRegion2FBO(gl, rs, texWidth);
+ renderRegion2FBO(gl, rs, texWidth);
}
// System.out.println("Scale: " + matrix.glGetMatrixf().get(1+4*3) +" " + matrix.glGetMatrixf().get(2+4*3));
renderFBO(gl, rs, vp_width, vp_height);
}
}
-
+
private void renderFBO(GL2ES2 gl, RenderState rs, int width, int hight) {
final ShaderState st = rs.getShaderState();
-
- gl.glViewport(0, 0, width, hight);
- st.uniform(gl, mgl_ActiveTexture);
- fbo.use(gl, 0);
- verticeFboAttr.enableBuffer(gl, true);
+
+ gl.glViewport(0, 0, width, hight);
+ st.uniform(gl, mgl_ActiveTexture);
+ gl.glActiveTexture(GL.GL_TEXTURE0 + mgl_ActiveTexture.intValue());
+ fbo.use(gl, texA);
+ verticeFboAttr.enableBuffer(gl, true);
texCoordFboAttr.enableBuffer(gl, true);
- indicesFbo.enableBuffer(gl, true);
-
- gl.glDrawElements(GL2ES2.GL_TRIANGLES, indicesFbo.getElementCount() * indicesFbo.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
-
- verticeFboAttr.enableBuffer(gl, false);
+ indicesFbo.bindBuffer(gl, true); // keeps VBO binding
+
+ gl.glDrawElements(GL2ES2.GL_TRIANGLES, indicesFbo.getElementCount() * indicesFbo.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
+
+ indicesFbo.bindBuffer(gl, false);
texCoordFboAttr.enableBuffer(gl, false);
- indicesFbo.enableBuffer(gl, false);
+ verticeFboAttr.enableBuffer(gl, false);
fbo.unuse(gl);
-
+
// setback: gl.glActiveTexture(currentActiveTextureEngine[0]);
}
-
+
private void renderRegion2FBO(GL2ES2 gl, RenderState rs, int[/*1*/] texWidth) {
final ShaderState st = rs.getShaderState();
-
+
if(0>=texWidth[0]) {
throw new IllegalArgumentException("texWidth must be greater than 0: "+texWidth[0]);
}
-
+
tex_width_c = texWidth[0];
tex_height_c = (int) ( ( ( tex_width_c * box.getHeight() ) / box.getWidth() ) + 0.5f );
-
+
// System.out.println("FBO Size: "+texWidth[0]+" -> "+tex_width_c+"x"+tex_height_c);
// System.out.println("FBO Scale: " + m.glGetMatrixf().get(0) +" " + m.glGetMatrixf().get(5));
-
+
if(null != fbo && fbo.getWidth() != tex_width_c && fbo.getHeight() != tex_height_c ) {
- fbo.destroy(gl);
- fbo = null;
+ fbo.reset(gl, tex_width_c, tex_height_c);
}
-
- if(null == fbo) {
- fbo = new FBObject(tex_width_c, tex_height_c);
- fbo.init(gl);
+
+ if(null == fbo) {
+ fbo = new FBObject();
+ fbo.reset(gl, tex_width_c, tex_height_c);
// FIXME: shall not use bilinear, due to own AA ? However, w/o bilinear result is not smooth
- fbo.attachTexture2D(gl, mgl_ActiveTexture.intValue(), GL2ES2.GL_LINEAR, GL2ES2.GL_LINEAR, GL2ES2.GL_CLAMP_TO_EDGE, GL2ES2.GL_CLAMP_TO_EDGE);
- // fbo.attachTexture2D(gl, mgl_ActiveTexture.intValue(), GL2ES2.GL_NEAREST, GL2ES2.GL_NEAREST, GL2ES2.GL_CLAMP_TO_EDGE, GL2ES2.GL_CLAMP_TO_EDGE);
- fbo.attachDepthBuffer(gl, GL.GL_DEPTH_COMPONENT16); // FIXME: or shall we use 24 or 32 bit depth ?
- if(!fbo.isStatusValid()) {
- throw new GLException("FBO invalid: "+fbo);
- }
+ texA = fbo.attachTexture2D(gl, 0, true, GL2ES2.GL_LINEAR, GL2ES2.GL_LINEAR, GL2ES2.GL_CLAMP_TO_EDGE, GL2ES2.GL_CLAMP_TO_EDGE);
+ // texA = fbo.attachTexture2D(gl, 0, GL2ES2.GL_NEAREST, GL2ES2.GL_NEAREST, GL2ES2.GL_CLAMP_TO_EDGE, GL2ES2.GL_CLAMP_TO_EDGE);
+ fbo.attachRenderbuffer(gl, Attachment.Type.DEPTH, 24);
} else {
fbo.bind(gl);
}
-
+
//render texture
gl.glViewport(0, 0, tex_width_c, tex_height_c);
st.uniform(gl, mgl_fboPMVMatrix); // use orthogonal matrix
-
+
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClear(GL2ES2.GL_COLOR_BUFFER_BIT | GL2ES2.GL_DEPTH_BUFFER_BIT);
renderRegion(gl);
fbo.unbind(gl);
-
+
st.uniform(gl, rs.getPMVMatrix()); // switch back to real PMV matrix
-
+
// if( !gl.isGL3() ) {
// GLSL < 1.30
if(null == mgl_TextureSize) {
@@ -282,21 +283,22 @@ public class VBORegion2PES2 extends GLRegion {
texSize.put(0, (float)fbo.getWidth());
texSize.put(1, (float)fbo.getHeight());
st.uniform(gl, mgl_TextureSize);
- //}
+ //}
}
-
+
private void renderRegion(GL2ES2 gl) {
- verticeTxtAttr.enableBuffer(gl, true);
+ verticeTxtAttr.enableBuffer(gl, true);
texCoordTxtAttr.enableBuffer(gl, true);
- indicesTxt.enableBuffer(gl, true);
-
- gl.glDrawElements(GL2ES2.GL_TRIANGLES, indicesTxt.getElementCount() * indicesTxt.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
-
- verticeTxtAttr.enableBuffer(gl, false);
+ indicesTxt.bindBuffer(gl, true); // keeps VBO binding
+
+ gl.glDrawElements(GL2ES2.GL_TRIANGLES, indicesTxt.getElementCount() * indicesTxt.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
+
+ indicesTxt.bindBuffer(gl, false);
texCoordTxtAttr.enableBuffer(gl, false);
- indicesTxt.enableBuffer(gl, false);
+ verticeTxtAttr.enableBuffer(gl, false);
}
-
+
+ @Override
public void destroy(GL2ES2 gl, RenderState rs) {
if(DEBUG_INSTANCE) {
System.err.println("VBORegion2PES2 Destroy: " + this);
@@ -305,7 +307,8 @@ public class VBORegion2PES2 extends GLRegion {
if(null != fbo) {
fbo.destroy(gl);
fbo = null;
- }
+ texA = null;
+ }
if(null != verticeTxtAttr) {
st.ownAttribute(verticeTxtAttr, false);
verticeTxtAttr.destroy(gl);
@@ -335,6 +338,6 @@ public class VBORegion2PES2 extends GLRegion {
indicesFbo = null;
}
triangles.clear();
- vertices.clear();
- }
+ vertices.clear();
+ }
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/VBORegionSPES2.java b/src/jogl/classes/jogamp/graph/curve/opengl/VBORegionSPES2.java
index 14ff0380f..9feb18a12 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/VBORegionSPES2.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/VBORegionSPES2.java
@@ -44,13 +44,14 @@ public class VBORegionSPES2 extends GLRegion {
private GLArrayDataServer texCoordAttr = null;
private GLArrayDataServer indices = null;
- protected VBORegionSPES2(int renderModes) {
+ protected VBORegionSPES2(int renderModes) {
super(renderModes);
}
+ @Override
protected void update(GL2ES2 gl, RenderState rs) {
if(!isDirty()) {
- return;
+ return;
}
if(null == indices) {
@@ -59,11 +60,11 @@ public class VBORegionSPES2 extends GLRegion {
indices = GLArrayDataServer.createData(3, GL2ES2.GL_SHORT, initialElementCount, GL.GL_STATIC_DRAW, GL.GL_ELEMENT_ARRAY_BUFFER);
- verticeAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
- false, initialElementCount, GL.GL_STATIC_DRAW);
+ verticeAttr = GLArrayDataServer.createGLSL(AttributeNames.VERTEX_ATTR_NAME, 3, GL2ES2.GL_FLOAT,
+ false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(verticeAttr, true);
- texCoordAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
+ texCoordAttr = GLArrayDataServer.createGLSL(AttributeNames.TEXCOORD_ATTR_NAME, 2, GL2ES2.GL_FLOAT,
false, initialElementCount, GL.GL_STATIC_DRAW);
st.ownAttribute(texCoordAttr, true);
@@ -74,7 +75,7 @@ public class VBORegionSPES2 extends GLRegion {
// process triangles
indices.seal(gl, false);
- indices.rewind();
+ indices.rewind();
for(int i=0; i<triangles.size(); i++) {
final Triangle t = triangles.get(i);
final Vertex[] t_vertices = t.getVertices();
@@ -102,7 +103,7 @@ public class VBORegionSPES2 extends GLRegion {
// process vertices and update bbox
box.reset();
- verticeAttr.seal(gl, false);
+ verticeAttr.seal(gl, false);
verticeAttr.rewind();
texCoordAttr.seal(gl, false);
texCoordAttr.rewind();
@@ -110,14 +111,14 @@ public class VBORegionSPES2 extends GLRegion {
final Vertex v = vertices.get(i);
verticeAttr.putf(v.getX());
verticeAttr.putf(v.getY());
- verticeAttr.putf(v.getZ());
+ verticeAttr.putf(v.getZ());
box.resize(v.getX(), v.getY(), v.getZ());
final float[] tex = v.getTexCoord();
texCoordAttr.putf(tex[0]);
texCoordAttr.putf(tex[1]);
}
- verticeAttr.seal(gl, true);
+ verticeAttr.seal(gl, true);
verticeAttr.enableBuffer(gl, false);
texCoordAttr.seal(gl, true);
texCoordAttr.enableBuffer(gl, false);
@@ -125,22 +126,24 @@ public class VBORegionSPES2 extends GLRegion {
setDirty(false);
}
+ @Override
protected void drawImpl(GL2ES2 gl, RenderState rs, int vp_width, int vp_height, int[/*1*/] texWidth) {
- verticeAttr.enableBuffer(gl, true);
+ verticeAttr.enableBuffer(gl, true);
texCoordAttr.enableBuffer(gl, true);
- indices.enableBuffer(gl, true);
+ indices.bindBuffer(gl, true); // keeps VBO binding
- gl.glDrawElements(GL2ES2.GL_TRIANGLES, indices.getElementCount() * indices.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
+ gl.glDrawElements(GL2ES2.GL_TRIANGLES, indices.getElementCount() * indices.getComponentCount(), GL2ES2.GL_UNSIGNED_SHORT, 0);
- verticeAttr.enableBuffer(gl, false);
+ indices.bindBuffer(gl, false);
texCoordAttr.enableBuffer(gl, false);
- indices.enableBuffer(gl, false);
- }
+ verticeAttr.enableBuffer(gl, false);
+ }
+ @Override
public final void destroy(GL2ES2 gl, RenderState rs) {
if(DEBUG_INSTANCE) {
System.err.println("VBORegionSPES2 Destroy: " + this);
- }
+ }
final ShaderState st = rs.getShaderState();
if(null != verticeAttr) {
st.ownAttribute(verticeAttr, false);
@@ -156,5 +159,5 @@ public class VBORegionSPES2 extends GLRegion {
indices.destroy(gl);
indices = null;
}
- }
+ }
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/AttributeNames.java b/src/jogl/classes/jogamp/graph/curve/opengl/shader/AttributeNames.java
index 8a109c34a..b46661778 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/AttributeNames.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/AttributeNames.java
@@ -3,14 +3,14 @@
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of JogAmp Community.
@@ -37,9 +37,9 @@ public class AttributeNames {
*/
public static final int TEXCOORD_ATTR_IDX = 1;
public static final String TEXCOORD_ATTR_NAME = "gca_TexCoords";
-
+
/** The color index in an OGL object
*/
public static final int COLOR_ATTR_IDX = 2;
- public static final String COLOR_ATTR_NAME = "gca_Colors";
+ public static final String COLOR_ATTR_NAME = "gca_Colors";
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/UniformNames.java b/src/jogl/classes/jogamp/graph/curve/opengl/shader/UniformNames.java
index ab6e0dc6e..ce23aadac 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/UniformNames.java
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/UniformNames.java
@@ -3,7 +3,7 @@ package jogamp.graph.curve.opengl.shader;
public class UniformNames {
public static final String gcu_PMVMatrix = "gcu_PMVMatrix"; // gcu_PMVMatrix[3]; // P, Mv, and Mvi
public static final String gcu_ColorStatic = "gcu_ColorStatic";
- public static final String gcu_Alpha = "gcu_Alpha";
+ public static final String gcu_Alpha = "gcu_Alpha";
public static final String gcu_Weight = "gcu_Weight";
public static final String gcu_TextureUnit = "gcu_TextureUnit";
public static final String gcu_TextureSize = "gcu_TextureSize";
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-xxx.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass-weight.fp
index d31bafb5a..7643dab7b 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-xxx.fp
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass-weight.fp
@@ -4,6 +4,13 @@
// 1-pass shader w/ weight
//
+#if __VERSION__ >= 130
+ #define varying in
+ out vec4 mgl_FragColor;
+#else
+ #define mgl_FragColor gl_FragColor
+#endif
+
#include uniforms.glsl
#include varyings.glsl
@@ -44,5 +51,5 @@ void main (void)
}
}
- gl_FragColor = vec4(c, alpha);
+ mgl_FragColor = vec4(c, alpha);
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-xxx.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass.fp
index f3a88adef..e12eef4b1 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-xxx.fp
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-1pass.fp
@@ -4,6 +4,13 @@
// 1-pass shader w/o weight
//
+#if __VERSION__ >= 130
+ #define varying in
+ out vec4 mgl_FragColor;
+#else
+ #define mgl_FragColor gl_FragColor
+#endif
+
#include uniforms.glsl
#include varyings.glsl
@@ -38,5 +45,5 @@ void main (void)
}
}
- gl_FragColor = vec4(c, alpha);
+ mgl_FragColor = vec4(c, alpha);
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-xxx.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass-weight.fp
index be738498c..fb71abd14 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-xxx.fp
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass-weight.fp
@@ -4,6 +4,14 @@
// 2-pass shader w/ weight
//
+#if __VERSION__ >= 130
+ #define varying in
+ out vec4 mgl_FragColor;
+ #define texture2D texture
+#else
+ #define mgl_FragColor gl_FragColor
+#endif
+
#include uniforms.glsl
#include varyings.glsl
@@ -48,10 +56,11 @@ void main (void)
t += texture2D(gcu_TextureUnit, rtex + 4.0*size*(vec2(0, 1)))*tex_weights.w;
t += texture2D(gcu_TextureUnit, rtex - 4.0*size*(vec2(0, 1)))*tex_weights.w;
- /** discard freezes NV tegra2 compiler
+ #if 0
if(t.w == 0.0) {
- discard;
- } */
+ discard; // discard freezes NV tegra2 compiler
+ }
+ #endif
c = t.xyz;
alpha = gcu_Alpha * t.w;
@@ -84,5 +93,5 @@ void main (void)
}
}
- gl_FragColor = vec4(c, alpha);
+ mgl_FragColor = vec4(c, alpha);
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-xxx.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass.fp
index 879e41e4c..8e5600dd9 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-xxx.fp
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-2pass.fp
@@ -4,6 +4,14 @@
// 2-pass shader w/o weight
//
+#if __VERSION__ >= 130
+ #define varying in
+ out vec4 mgl_FragColor;
+ #define texture2D texture
+#else
+ #define mgl_FragColor gl_FragColor
+#endif
+
#include uniforms.glsl
#include varyings.glsl
@@ -49,10 +57,11 @@ void main (void)
t += texture2D(gcu_TextureUnit, rtex + 4.0*size*(vec2(0, 1)))*tex_weights.w;
t += texture2D(gcu_TextureUnit, rtex - 4.0*size*(vec2(0, 1)))*tex_weights.w;
- /** discard freezes NV tegra2 compiler
+ #if 0
if(t.w == 0.0){
- discard;
- } */
+ discard; // discard freezes NV tegra2 compiler
+ }
+ #endif
c = t.xyz;
alpha = gcu_Alpha * t.w;
@@ -78,5 +87,5 @@ void main (void)
}
}
- gl_FragColor = vec4(c, alpha);
+ mgl_FragColor = vec4(c, alpha);
}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2-merged.vp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2-merged.vp
deleted file mode 100644
index 530b24f64..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2-merged.vp
+++ /dev/null
@@ -1,19 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#ifdef GL_ES
- precision lowp float;
- precision lowp int;
-#endif
-
-uniform mat4 gcu_PMVMatrix[3]; // P, Mv, and Mvi
-varying vec2 gcv_TexCoord;
-
-attribute vec4 gca_Vertices;
-attribute vec2 gca_TexCoords;
-
-
-void main(void)
-{
- gl_Position = gcu_PMVMatrix[0] * gcu_PMVMatrix[1] * gca_Vertices;
- gcv_TexCoord = gca_TexCoords;
-}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2.vp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2.vp
deleted file mode 100644
index 15ce8cc2b..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-es2.vp
+++ /dev/null
@@ -1,9 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 100
-
-precision mediump float;
-precision mediump int;
-
-#include curverenderer01-xxx.vp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-gl2.vp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-gl2.vp
deleted file mode 100644
index 1ac33e8b3..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-gl2.vp
+++ /dev/null
@@ -1,6 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 110
-
-#include curverenderer01-xxx.vp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-xxx.vp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01.vp
index 64a6835ec..4b5c8b1e2 100644
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01-xxx.vp
+++ b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01.vp
@@ -1,5 +1,10 @@
//Copyright 2010 JogAmp Community. All rights reserved.
+#if __VERSION__ >= 130
+ #define attribute in
+ #define varying out
+#endif
+
#include uniforms.glsl
#include attributes.glsl
#include varyings.glsl
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2-merged.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2-merged.fp
deleted file mode 100644
index da32df51f..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2-merged.fp
+++ /dev/null
@@ -1,52 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#ifdef GL_ES
- precision lowp float;
- precision lowp int;
-#endif
-
-uniform mat4 gcu_PMVMatrix[3]; // P, Mv, and Mvi
-uniform vec3 gcu_ColorStatic;
-uniform float gcu_Alpha;
-
-varying vec2 gcv_TexCoord;
-
-const vec3 b_color = vec3(1.0, 1.0, 1.0);
-
-void main (void)
-{
- vec2 rtex = vec2(abs(gcv_TexCoord.x),abs(gcv_TexCoord.y));
- vec3 c = gcu_ColorStatic;
-
- float alpha = 0.0;
-
- if((gcv_TexCoord.x == 0.0) && (gcv_TexCoord.y == 0.0)) {
- alpha = gcu_Alpha;
- }
- else if ((gcv_TexCoord.x > 0.0) && (rtex.y > 0.0 || rtex.x == 1.0)) {
- vec2 dtx = dFdx(rtex);
- vec2 dty = dFdy(rtex);
-
- rtex.y -= 0.1;
-
- if(rtex.y < 0.0) {
- rtex.y = 0.0;
- }
-
- vec2 f = vec2((dtx.y - dtx.x + 2.0*rtex.x*dtx.x), (dty.y - dty.x + 2.0*rtex.x*dty.x));
- float position = rtex.y - (rtex.x * (1.0 - rtex.x));
- float d = position/(length(f));
-
- float a = (0.5 - d * sign(gcv_TexCoord.y));
-
- if (a >= 1.0) {
- alpha = gcu_Alpha;
- } else if (a <= 0.0) {
- alpha=0.0;
- } else {
- alpha = gcu_Alpha * a;
- }
- }
-
- gl_FragColor = vec4(c, alpha);
-}
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2.fp
deleted file mode 100644
index e693891a6..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-es2.fp
+++ /dev/null
@@ -1,13 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 100
-
-// we require dFdx/dFdy
-// #extension OES_standard_derivatives : require
-#extension GL_OES_standard_derivatives : enable
-
-precision mediump float;
-precision mediump int;
-
-#include curverenderer01a-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-gl2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-gl2.fp
deleted file mode 100644
index d187fea24..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01a-gl2.fp
+++ /dev/null
@@ -1,6 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 110
-
-#include curverenderer01a-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-es2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-es2.fp
deleted file mode 100644
index 2e709630d..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-es2.fp
+++ /dev/null
@@ -1,14 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 100
-
-// we require dFdx/dFdy
-// #extension OES_standard_derivatives : require
-#extension GL_OES_standard_derivatives : enable
-
-precision mediump float;
-precision mediump int;
-precision mediump sampler2D;
-
-#include curverenderer01b-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-gl2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-gl2.fp
deleted file mode 100644
index 01e08ff30..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer01b-gl2.fp
+++ /dev/null
@@ -1,6 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 110
-
-#include curverenderer01b-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-es2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-es2.fp
deleted file mode 100644
index b52420350..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-es2.fp
+++ /dev/null
@@ -1,14 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 100
-
-// we require dFdx/dFdy
-// #extension OES_standard_derivatives : require
-#extension GL_OES_standard_derivatives : enable
-
-precision mediump float;
-precision mediump int;
-precision mediump sampler2D;
-
-#include curverenderer02a-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-gl2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-gl2.fp
deleted file mode 100644
index 01715daa5..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02a-gl2.fp
+++ /dev/null
@@ -1,6 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 110
-
-#include curverenderer02a-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-es2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-es2.fp
deleted file mode 100644
index e0486dd7b..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-es2.fp
+++ /dev/null
@@ -1,14 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 100
-
-// we require dFdx/dFdy
-// #extension OES_standard_derivatives : require
-#extension GL_OES_standard_derivatives : enable
-
-precision mediump float;
-precision mediump int;
-precision mediump sampler2D;
-
-#include curverenderer02b-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-gl2.fp b/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-gl2.fp
deleted file mode 100644
index b1cc72188..000000000
--- a/src/jogl/classes/jogamp/graph/curve/opengl/shader/curverenderer02b-gl2.fp
+++ /dev/null
@@ -1,6 +0,0 @@
-//Copyright 2010 JogAmp Community. All rights reserved.
-
-#version 110
-
-#include curverenderer02b-xxx.fp
-
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/CDTriangulator2D.java b/src/jogl/classes/jogamp/graph/curve/tess/CDTriangulator2D.java
index 078f2f332..f0910c465 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/CDTriangulator2D.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/CDTriangulator2D.java
@@ -35,50 +35,52 @@ import com.jogamp.graph.curve.tess.Triangulator;
import com.jogamp.graph.geom.Outline;
import com.jogamp.graph.geom.Triangle;
import com.jogamp.graph.geom.Vertex;
-import com.jogamp.graph.math.VectorUtil;
+import com.jogamp.opengl.math.VectorUtil;
import jogamp.opengl.Debug;
-/** Constrained Delaunay Triangulation
+/** Constrained Delaunay Triangulation
* implementation of a list of Outlines that define a set of
* Closed Regions with optional n holes.
- *
+ *
*/
public class CDTriangulator2D implements Triangulator{
protected static final boolean DEBUG = Debug.debug("Triangulation");
-
+
private float sharpness = 0.5f;
private ArrayList<Loop> loops;
private ArrayList<Vertex> vertices;
-
+
private ArrayList<Triangle> triangles;
private int maxTriID = 0;
-
+
/** Constructor for a new Delaunay triangulator
*/
public CDTriangulator2D() {
reset();
}
-
+
/** Reset the triangulation to initial state
* Clearing cached data
*/
+ @Override
public void reset() {
maxTriID = 0;
vertices = new ArrayList<Vertex>();
triangles = new ArrayList<Triangle>(3);
loops = new ArrayList<Loop>();
}
-
+
+ @Override
public void addCurve(Outline polyline) {
Loop loop = null;
-
+
if(!loops.isEmpty()) {
loop = getContainerLoop(polyline);
}
-
+
if(loop == null) {
GraphOutline outline = new GraphOutline(polyline);
GraphOutline innerPoly = extractBoundaryTriangles(outline, false);
@@ -92,8 +94,9 @@ public class CDTriangulator2D implements Triangulator{
loop.addConstraintCurve(innerPoly);
}
}
-
- public ArrayList<Triangle> generate() {
+
+ @Override
+ public ArrayList<Triangle> generate() {
for(int i=0;i<loops.size();i++) {
Loop loop = loops.get(i);
int numTries = 0;
@@ -141,16 +144,16 @@ public class CDTriangulator2D implements Triangulator{
GraphVertex gv0 = outVertices.get((i+size-1)%size);
GraphVertex gv2 = outVertices.get((i+1)%size);
GraphVertex gv1 = currentVertex;
-
+
if(!currentVertex.getPoint().isOnCurve()) {
Vertex v0 = gv0.getPoint().clone();
Vertex v2 = gv2.getPoint().clone();
Vertex v1 = gv1.getPoint().clone();
-
+
gv0.setBoundaryContained(true);
gv1.setBoundaryContained(true);
gv2.setBoundaryContained(true);
-
+
final Triangle t;
final boolean holeLike;
if(VectorUtil.ccw(v0,v1,v2)) {
@@ -185,7 +188,7 @@ public class CDTriangulator2D implements Triangulator{
}
return innerOutline;
}
-
+
private Loop getContainerLoop(Outline polyline) {
ArrayList<Vertex> vertices = polyline.getVertices();
for(int i=0; i < loops.size(); i++) {
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/GraphOutline.java b/src/jogl/classes/jogamp/graph/curve/tess/GraphOutline.java
index c8251af15..2e8d4f58f 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/GraphOutline.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/GraphOutline.java
@@ -35,13 +35,13 @@ import com.jogamp.graph.geom.Vertex;
public class GraphOutline {
final private Outline outline;
final private ArrayList<GraphVertex> controlpoints = new ArrayList<GraphVertex>(3);
-
+
public GraphOutline(){
this.outline = new Outline();
}
-
+
/**Create a control polyline of control vertices
- * the curve pieces can be identified by onCurve flag
+ * the curve pieces can be identified by onCurve flag
* of each cp the control polyline is open by default
*/
public GraphOutline(Outline ol){
@@ -59,7 +59,7 @@ public class GraphOutline {
public ArrayList<GraphVertex> getGraphPoint() {
return controlpoints;
}
-
+
public ArrayList<Vertex> getVertices() {
return outline.getVertices();
}
@@ -68,5 +68,5 @@ public class GraphOutline {
controlpoints.add(v);
outline.addVertex(v.getPoint());
}
-
+
}
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/GraphVertex.java b/src/jogl/classes/jogamp/graph/curve/tess/GraphVertex.java
index 52d02baa5..1ef1d8c7f 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/GraphVertex.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/GraphVertex.java
@@ -35,7 +35,7 @@ public class GraphVertex {
private Vertex point;
private ArrayList<HEdge> edges = null;
private boolean boundaryContained = false;
-
+
public GraphVertex(Vertex point) {
this.point = point;
}
@@ -43,15 +43,15 @@ public class GraphVertex {
public Vertex getPoint() {
return point;
}
-
+
public float getX(){
return point.getX();
}
-
+
public float getY(){
return point.getY();
}
-
+
public float getZ(){
return point.getZ();
}
@@ -70,7 +70,7 @@ public class GraphVertex {
public void setEdges(ArrayList<HEdge> edges) {
this.edges = edges;
}
-
+
public void addEdge(HEdge edge){
if(edges == null){
edges = new ArrayList<HEdge>();
@@ -112,7 +112,7 @@ public class GraphVertex {
}
return null;
}
-
+
public boolean isBoundaryContained() {
return boundaryContained;
}
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/HEdge.java b/src/jogl/classes/jogamp/graph/curve/tess/HEdge.java
index 4d29a81f3..acaa3d708 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/HEdge.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/HEdge.java
@@ -35,14 +35,14 @@ public class HEdge {
public static int BOUNDARY = 3;
public static int INNER = 1;
public static int HOLE = 2;
-
+
private GraphVertex vert;
private HEdge prev = null;
private HEdge next = null;
private HEdge sibling = null;
private int type = BOUNDARY;
private Triangle triangle = null;
-
+
public HEdge(GraphVertex vert, int type) {
this.vert = vert;
this.type = type;
@@ -112,19 +112,19 @@ public class HEdge {
public void setTriangle(Triangle triangle) {
this.triangle = triangle;
}
-
+
public static <T extends Vertex> void connect(HEdge first, HEdge next){
first.setNext(next);
next.setPrev(first);
}
-
+
public static <T extends Vertex> void makeSiblings(HEdge first, HEdge second){
first.setSibling(second);
second.setSibling(first);
}
-
+
public boolean vertexOnCurveVertex(){
return vert.getPoint().isOnCurve();
}
-
+
}
diff --git a/src/jogl/classes/jogamp/graph/curve/tess/Loop.java b/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
index b4b796b51..c1dafc0d1 100644
--- a/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
+++ b/src/jogl/classes/jogamp/graph/curve/tess/Loop.java
@@ -30,10 +30,10 @@ package jogamp.graph.curve.tess;
import java.util.ArrayList;
-import com.jogamp.graph.geom.AABBox;
import com.jogamp.graph.geom.Vertex;
import com.jogamp.graph.geom.Triangle;
-import com.jogamp.graph.math.VectorUtil;
+import com.jogamp.opengl.math.VectorUtil;
+import com.jogamp.opengl.math.geom.AABBox;
public class Loop {
private HEdge root = null;
@@ -51,7 +51,7 @@ public class Loop {
public Triangle cut(boolean delaunay){
if(isSimplex()){
- Triangle t = new Triangle(root.getGraphPoint().getPoint(), root.getNext().getGraphPoint().getPoint(),
+ Triangle t = new Triangle(root.getGraphPoint().getPoint(), root.getNext().getGraphPoint().getPoint(),
root.getNext().getNext().getGraphPoint().getPoint());
t.setVerticesBoundary(checkVerticesBoundary(root));
return t;
@@ -103,20 +103,20 @@ public class Loop {
throw new IllegalArgumentException("outline's vertices < 3: " + vertices.size());
}
final VectorUtil.Winding hasWinding = VectorUtil.getWinding(
- vertices.get(0).getPoint(),
+ vertices.get(0).getPoint(),
vertices.get(1).getPoint(),
vertices.get(2).getPoint());
//FIXME: handle case when vertices come inverted - Rami
// skips inversion CW -> CCW
final boolean invert = hasWinding != reqWinding &&
reqWinding == VectorUtil.Winding.CW;
-
+
final int max;
final int edgeType = reqWinding == VectorUtil.Winding.CCW ? HEdge.BOUNDARY : HEdge.HOLE ;
int index;
HEdge firstEdge = null;
HEdge lastEdge = null;
-
+
if(!invert) {
max = vertices.size();
index = 0;
@@ -160,7 +160,7 @@ public class Loop {
public void addConstraintCurve(GraphOutline polyline) {
// GraphOutline outline = new GraphOutline(polyline);
/**needed to generate vertex references.*/
- initFromPolyline(polyline, VectorUtil.Winding.CW);
+ initFromPolyline(polyline, VectorUtil.Winding.CW);
GraphVertex v3 = locateClosestVertex(polyline);
HEdge v3Edge = v3.findBoundEdge();
@@ -180,9 +180,9 @@ public class Loop {
HEdge.connect(crossEdgeSib, root);
}
- /** Locates the vertex and update the loops root
- * to have (root + vertex) as closest pair
- * @param polyline the control polyline
+ /** Locates the vertex and update the loops root
+ * to have (root + vertex) as closest pair
+ * @param polyline the control polyline
* to search for closestvertices
* @return the vertex that is closest to the newly set root Hedge.
*/
@@ -205,7 +205,7 @@ public class Loop {
for (GraphVertex vert:vertices){
if(vert == v || vert == nextV || vert == cand)
continue;
- inValid = VectorUtil.inCircle(v.getPoint(), nextV.getPoint(),
+ inValid = VectorUtil.inCircle(v.getPoint(), nextV.getPoint(),
cand.getPoint(), vert.getPoint());
if(inValid){
break;
@@ -243,14 +243,14 @@ public class Loop {
Vertex cand = candEdge.getGraphPoint().getPoint();
HEdge e = candEdge.getNext();
while (e != candEdge){
- if(e.getGraphPoint() == root.getGraphPoint()
- || e.getGraphPoint() == next.getGraphPoint()
+ if(e.getGraphPoint() == root.getGraphPoint()
+ || e.getGraphPoint() == next.getGraphPoint()
|| e.getGraphPoint().getPoint() == cand){
e = e.getNext();
continue;
}
inValid = VectorUtil.inCircle(root.getGraphPoint().getPoint(), next.getGraphPoint().getPoint(),
- cand, e.getGraphPoint().getPoint());
+ cand, e.getGraphPoint().getPoint());
if(inValid){
break;
}
@@ -311,15 +311,15 @@ public class Loop {
(v.getX() < (v2.getX() - v1.getX()) * (v.getY() - v1.getY()) / (v2.getY() - v1.getY()) + v1.getX()) ){
inside = !inside;
}
-
+
current = next;
next = current.getNext();
-
+
} while(current != root);
-
+
return inside;
}
-
+
public int computeLoopSize(){
int size = 0;
HEdge e = root;
diff --git a/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java b/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
index 12da966a2..8c214dd0b 100644
--- a/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
+++ b/src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
@@ -33,16 +33,15 @@ import com.jogamp.graph.font.Font.Glyph;
import com.jogamp.graph.geom.Vertex;
import com.jogamp.graph.geom.Triangle;
import com.jogamp.graph.geom.Vertex.Factory;
-
import com.jogamp.graph.curve.OutlineShape;
-// import com.jogamp.graph.math.Quaternion;
+// import com.jogamp.opengl.math.Quaternion;
public class GlyphShape {
-
+
// private Quaternion quat= null;
private Glyph glyph;
private OutlineShape shape;
-
+
/** Create a new Glyph shape
* based on Parametric curve control polyline
*/
@@ -50,7 +49,7 @@ public class GlyphShape {
this.shape = new OutlineShape(factory);
this.glyph = null;
}
-
+
/** Create a new GlyphShape from a {@link OutlineShape}
* @param factory vertex impl factory {@link Factory}
* @param shape {@link OutlineShape} representation of the Glyph
@@ -58,44 +57,45 @@ public class GlyphShape {
public GlyphShape(Vertex.Factory<? extends Vertex> factory, Glyph glyph, OutlineShape shape){
this(factory);
this.shape = shape;
- this.shape.transformOutlines(OutlineShape.VerticesState.QUADRATIC_NURBS);
+ this.shape.transformOutlines(OutlineShape.VerticesState.QUADRATIC_NURBS);
this.glyph = glyph;
}
-
+
public final void destroy() {
shape.clear();
shape = null;
glyph = null;
}
-
+
public final Vertex.Factory<? extends Vertex> vertexFactory() { return shape.vertexFactory(); }
-
- public final Glyph getGlyph() {
+
+ public final Glyph getGlyph() {
return glyph;
}
-
+
public final OutlineShape getShape() {
return shape;
}
-
+
public final int getNumVertices() {
return shape.getVertices().size();
}
-
- /** Get the rotational Quaternion attached to this Shape
+
+ /** Get the rotational quaternion attached to this Shape.
* @return the Quaternion Object
public final Quaternion getQuat() {
return quat;
}
-
- * Set the Quaternion that shall defien the rotation
+
+ /**
+ * Set the Quaternion that shall define the rotation
* of this shape.
* @param quat
public final void setQuat(Quaternion quat) {
this.quat = quat;
}
- */
-
+ */
+
/** Triangluate the glyph shape
* @return ArrayList of triangles which define this shape
*/
@@ -108,5 +108,5 @@ public class GlyphShape {
*/
public final ArrayList<Vertex> getVertices(){
return shape.getVertices();
- }
+ }
}
diff --git a/src/jogl/classes/jogamp/graph/curve/text/GlyphString.java b/src/jogl/classes/jogamp/graph/curve/text/GlyphString.java
index 13da49d9e..5fb547e69 100644
--- a/src/jogl/classes/jogamp/graph/curve/text/GlyphString.java
+++ b/src/jogl/classes/jogamp/graph/curve/text/GlyphString.java
@@ -31,7 +31,6 @@ import java.util.ArrayList;
import java.util.List;
import com.jogamp.graph.font.Font;
-import com.jogamp.graph.geom.AABBox;
import com.jogamp.graph.geom.Vertex;
import com.jogamp.graph.geom.Triangle;
import com.jogamp.graph.geom.Vertex.Factory;
@@ -46,6 +45,7 @@ import com.jogamp.graph.curve.OutlineShape;
import com.jogamp.graph.curve.Region;
import com.jogamp.graph.curve.opengl.GLRegion;
import com.jogamp.graph.curve.opengl.RenderState;
+import com.jogamp.opengl.math.geom.AABBox;
import com.jogamp.opengl.util.PMVMatrix;
/**