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.pushSymbol(s);
} }
mSymbolLayer.prepare();
layers.setTextureLayers(mSymbolLayer); layers.setTextureLayers(mSymbolLayer);
layers.prepare();
compile(); compile();
} }

View File

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

View File

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

View File

@ -365,4 +365,12 @@ public class ElementLayers extends TileData {
TextureItem.init(gl); 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; 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) { protected void compile(ShortBuffer sbuf) {
compileVertexItems(sbuf); compileVertexItems(sbuf);
} }

View File

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

View File

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

View File

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