refactor: move compileVertexItems() to RenderElement

- rename addPoolItems -> compileVertexItems
This commit is contained in:
Hannes Janetzek 2014-06-22 13:53:18 +02:00
parent 9f8a383ce6
commit 59dd9425c8
5 changed files with 31 additions and 34 deletions

View File

@ -267,10 +267,28 @@ public class ElementLayers extends TileData {
public void compile(ShortBuffer sbuf, boolean addFill) {
addLayerItems(sbuf, baseLayers, POLYGON, addFill ? 4 : 0);
int pos = addFill ? 4 : 0;
for (RenderElement l = baseLayers; l != null; l = l.next) {
if (l.type == POLYGON) {
l.compile(sbuf);
//log.debug("offset {} {}", l.offset, pos);
l.offset = pos;
pos += l.numVertices;
}
}
offset[LINE] = sbuf.position() * SHORT_BYTES;
addLayerItems(sbuf, baseLayers, LINE, 0);
pos = 0;
for (RenderElement l = baseLayers; l != null; l = l.next) {
if (l.type == LINE) {
l.compile(sbuf);
l.offset = pos;
pos += l.numVertices;
}
}
//offset[TEXLINE] = size * SHORT_BYTES;
@ -285,34 +303,6 @@ public class ElementLayers extends TileData {
}
}
/**
* optimization for Line- and PolygonLayer:
* collect all pool items and add back in one go.
*/
private static int addLayerItems(ShortBuffer sbuf, RenderElement l,
int type, int pos) {
int size = 0;
for (; l != null; l = l.next) {
if (l.type != type)
continue;
size += l.vertexItems.compile(sbuf);
l.offset = pos;
pos += l.numVertices;
}
return size;
}
static void addPoolItems(RenderElement l, ShortBuffer sbuf) {
/* keep offset of layer data in vbo */
l.offset = sbuf.position() * SHORT_BYTES;
l.vertexItems.compile(sbuf);
}
public void setFrom(ElementLayers layers) {
setBaseLayers(layers.baseLayers);
setTextureLayers((TextureLayer) layers.textureLayers);

View File

@ -224,7 +224,7 @@ public final class LineTexLayer extends RenderElement {
@Override
protected void compile(ShortBuffer sbuf) {
ElementLayers.addPoolItems(this, sbuf);
compileVertexItems(sbuf);
/* add additional vertex for interleaving, see TexLineLayer. */
sbuf.position(sbuf.position() + 6);
}

View File

@ -73,7 +73,7 @@ public class MeshLayer extends RenderElement {
}
/* add vertices to shared VBO */
ElementLayers.addPoolItems(this, sbuf);
ElementLayers.compileVertexItems(this, sbuf);
/* add indices to indicesVbo */
sbuf = MapRenderer.getShortBuffer(numIndices);

View File

@ -55,7 +55,7 @@ public abstract class RenderElement extends Inlist<RenderElement> {
/** compile vertex data to vbo. */
protected void compile(ShortBuffer sbuf) {
compileVertexItems(sbuf);
}
public int getOffset() {
@ -76,4 +76,11 @@ public abstract class RenderElement extends Inlist<RenderElement> {
protected void compile(ShortBuffer vertexBuffer, ShortBuffer indexBuffer) {
}
protected void compileVertexItems(ShortBuffer sbuf) {
/* keep offset of layer data in vbo */
offset = sbuf.position() * 2;
vertexItems.compile(sbuf);
}
}

View File

@ -63,7 +63,7 @@ public abstract class TextureLayer extends RenderElement {
t.upload();
/* add vertices to vbo */
ElementLayers.addPoolItems(this, sbuf);
compileVertexItems(sbuf);
}
abstract public boolean prepare();