add ElementLayer/RenderElement prepare()

- used to prepare for compile() when all layer data is added
This commit is contained in:
Hannes Janetzek 2014-09-04 16:51:57 +02:00
parent 990e04477c
commit 31a45b0468
8 changed files with 23 additions and 16 deletions

View File

@ -162,8 +162,8 @@ public class MarkerRenderer extends ElementRenderer {
mSymbolLayer.pushSymbol(s);
}
mSymbolLayer.prepare();
layers.setTextureLayers(mSymbolLayer);
layers.prepare();
compile();
}

View File

@ -130,7 +130,11 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
public void completed(QueryResult result) {
mTileLayer.callHooksComplete(mTile, result == QueryResult.SUCCESS);
/* finish layers - tessellate and cleanup on worker-thread */
mLayers.prepare();
super.completed(result);
clearState();
}

View File

@ -122,11 +122,6 @@ public class BitmapLayer extends TextureLayer {
sbuf.put(buf);
}
@Override
public boolean prepare() {
return false;
}
@Override
protected void compile(ShortBuffer sbuf) {

View File

@ -365,4 +365,12 @@ public class ElementLayers extends TileData {
TextureItem.init(gl);
}
public void prepare() {
for (RenderElement l = baseLayers; l != null; l = l.next)
l.prepare();
for (RenderElement l = textureLayers; l != null; l = l.next)
l.prepare();
}
}

View File

@ -54,7 +54,15 @@ public abstract class RenderElement extends Inlist<RenderElement> {
numVertices = 0;
}
/** compile vertex data to vbo. */
/**
* Final preparation of content before compilation
* for stuff that should not be done on render-thread.
*/
protected void prepare() {
}
/** Compile vertex data to vbo. */
protected void compile(ShortBuffer sbuf) {
compileVertexItems(sbuf);
}

View File

@ -196,9 +196,4 @@ public final class SymbolLayer extends TextureLayer {
super.clear();
clearItems();
}
@Override
public boolean prepare() {
return true;
}
}

View File

@ -79,7 +79,7 @@ public class TextLayer extends TextureLayer {
}
@Override
public boolean prepare() {
public void prepare() {
short numIndices = 0;
short offsetIndices = 0;
numVertices = 0;
@ -158,8 +158,6 @@ public class TextLayer extends TextureLayer {
t.offset = offsetIndices;
t.indices = (short) (numIndices - offsetIndices);
return true;
}
protected void addItem(TextItem it,

View File

@ -66,7 +66,6 @@ public abstract class TextureLayer extends RenderElement {
compileVertexItems(sbuf);
}
abstract public boolean prepare();
protected void clear() {
while (textures != null)