From c3621221b9a563495b4f54fe60e18e8db8cc57fb Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 24 Feb 2014 13:32:34 +0100
Subject: Bug 802: Graph TextRenderer Performance Part-1 (incomplete, rendering
 artifacts)

Strategy Change:
  - Font.Glyph itself holds it's OutlineShape
    with it's default scaling.
    Triangulation is done only once per glyph!

  - A CharSequence produces a Region
    by translating and scaling each Glyphs's OutlineShape.
    This removes the need for re-triangulate - see above.
    See: TextRendererUtil

  - The indices of re-added Triangles are
    offset to the new vertices (FIXME, seems not be be accurate yet).

  - OutlineShape's vertices and triangles are reused if 'clean'.

  - Simplified code

  - Reduced copies

API Changes:
  - OutlineShape, Region, ...: See above

  - Removed TextRenderer, GlyphShape and GlyphString: Redundant

  - Added TextRendererUtil to produce the Region from CharSequence

Result:
  - Over 600 fps while changing text for each frame.
    Previously only ~60fps max.

TODO:
  - Region shall not hold the triangles itself,
    but the indices instead.
    This will remove the need to swizzle w/ vertices in the Region Renderer impl
    and easies reusage of OutlineShapes.
---
 src/jogl/classes/com/jogamp/graph/geom/Vertex.java | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'src/jogl/classes/com/jogamp/graph/geom/Vertex.java')

diff --git a/src/jogl/classes/com/jogamp/graph/geom/Vertex.java b/src/jogl/classes/com/jogamp/graph/geom/Vertex.java
index 994253f71..fc9590ae7 100644
--- a/src/jogl/classes/com/jogamp/graph/geom/Vertex.java
+++ b/src/jogl/classes/com/jogamp/graph/geom/Vertex.java
@@ -37,6 +37,10 @@ public interface Vertex extends Vert3fImmutable, Cloneable {
     public static interface Factory <T extends Vertex> {
         T create();
 
+        T create(Vertex src);
+
+        T create(int id, boolean onCurve, float[] texCoordsBuffer);
+
         T create(float x, float y, float z, boolean onCurve);
 
         T create(float[] coordsBuffer, int offset, int length, boolean onCurve);
-- 
cgit v1.2.3