diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/layers/tile/vector/VectorTileLoader.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/layers/tile/vector/VectorTileLoader.java
index 5fddf68f..a72a2aee 100644
--- a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/layers/tile/vector/VectorTileLoader.java
+++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/layers/tile/vector/VectorTileLoader.java
@@ -27,6 +27,7 @@ import org.oscim.renderer.elements.ElementLayers;
import org.oscim.renderer.elements.ExtrusionLayer;
import org.oscim.renderer.elements.LineLayer;
import org.oscim.renderer.elements.LineTexLayer;
+import org.oscim.renderer.elements.MeshLayer;
import org.oscim.renderer.elements.PolygonLayer;
import org.oscim.renderer.elements.SymbolItem;
import org.oscim.renderer.elements.TextItem;
@@ -319,17 +320,20 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
}
}
+ private final static boolean USE_MESH_POLY = false;
+
@Override
public void renderArea(Area area, int level) {
int numLayer = mCurLayer + level;
-
- PolygonLayer layer = mTile.layers.getPolygonLayer(numLayer);
-
- if (layer == null)
- return;
-
- layer.area = area;
- layer.addPolygon(mElement.points, mElement.index);
+ if (USE_MESH_POLY) {
+ MeshLayer l = mTile.layers.getMeshLayer(numLayer);
+ l.area = area;
+ l.addMesh(mElement);
+ } else {
+ PolygonLayer l = mTile.layers.getPolygonLayer(numLayer);
+ l.area = area;
+ l.addPolygon(mElement.points, mElement.index);
+ }
}
@Override
diff --git a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java
index 287ad552..082a67cf 100644
--- a/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java
+++ b/vtm/src/org/oscim/layers/tile/vector/VectorTileLoader.java
@@ -31,6 +31,7 @@ import org.oscim.renderer.elements.ElementLayers;
import org.oscim.renderer.elements.ExtrusionLayer;
import org.oscim.renderer.elements.LineLayer;
import org.oscim.renderer.elements.LineTexLayer;
+import org.oscim.renderer.elements.MeshLayer;
import org.oscim.renderer.elements.PolygonLayer;
import org.oscim.renderer.elements.SymbolItem;
import org.oscim.renderer.elements.TextItem;
@@ -324,14 +325,22 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
}
}
+ // slower to load (requires tesselation) and uses
+ // more memory but should be faster to render
+ private final static boolean USE_MESH_POLY = false;
+
@Override
public void renderArea(Area area, int level) {
int numLayer = mCurLayer + level;
-
- PolygonLayer l = mTile.layers.getPolygonLayer(numLayer);
-
- l.area = area;
- l.addPolygon(mElement.points, mElement.index);
+ if (USE_MESH_POLY) {
+ MeshLayer l = mTile.layers.getMeshLayer(numLayer);
+ l.area = area;
+ l.addMesh(mElement);
+ } else {
+ PolygonLayer l = mTile.layers.getPolygonLayer(numLayer);
+ l.area = area;
+ l.addPolygon(mElement.points, mElement.index);
+ }
}
@Override
diff --git a/vtm/src/org/oscim/tiling/TileRenderer.java b/vtm/src/org/oscim/tiling/TileRenderer.java
index 9367199e..6672c2fd 100644
--- a/vtm/src/org/oscim/tiling/TileRenderer.java
+++ b/vtm/src/org/oscim/tiling/TileRenderer.java
@@ -32,6 +32,7 @@ import org.oscim.renderer.MapRenderer.Matrices;
import org.oscim.renderer.elements.BitmapLayer;
import org.oscim.renderer.elements.LineLayer;
import org.oscim.renderer.elements.LineTexLayer;
+import org.oscim.renderer.elements.MeshLayer;
import org.oscim.renderer.elements.PolygonLayer;
import org.oscim.renderer.elements.RenderElement;
import org.oscim.utils.FastMath;
@@ -480,22 +481,28 @@ public class TileRenderer extends LayerRenderer {
case RenderElement.LINE:
if (!clipped) {
- // draw stencil buffer clip region
- PolygonLayer.Renderer.draw(pos, null, m, true, div, true);
clipped = true;
+ PolygonLayer.Renderer.draw(pos, null, m, true, div, true);
}
l = LineLayer.Renderer.draw(t.layers, l, pos, m, scale);
break;
case RenderElement.TEXLINE:
if (!clipped) {
- // draw stencil buffer clip region
- PolygonLayer.Renderer.draw(pos, null, m, true, div, true);
clipped = true;
+ PolygonLayer.Renderer.draw(pos, null, m, true, div, true);
}
l = LineTexLayer.Renderer.draw(t.layers, l, pos, m, div);
break;
+ case RenderElement.MESH:
+ if (!clipped) {
+ clipped = true;
+ PolygonLayer.Renderer.draw(pos, null, m, true, div, true);
+ }
+ l = MeshLayer.Renderer.draw(pos, l, m);
+ break;
+
default:
// just in case
l = l.next;