fixup: layer -> bucket variable names
This commit is contained in:
parent
b057c56466
commit
b031f98fff
@ -266,7 +266,7 @@ public class MapTile extends Tile {
|
||||
* Get the default ElementLayers which are added
|
||||
* by {@link VectorTileLoader}
|
||||
*/
|
||||
public RenderBuckets getLayers() {
|
||||
public RenderBuckets getBuckets() {
|
||||
if (!(data instanceof RenderBuckets))
|
||||
return null;
|
||||
|
||||
|
@ -175,14 +175,14 @@ public abstract class TileRenderer extends LayerRenderer {
|
||||
|
||||
private static int uploadTileData(MapTile tile) {
|
||||
tile.state = READY;
|
||||
RenderBuckets layers = tile.getLayers();
|
||||
RenderBuckets buckets = tile.getBuckets();
|
||||
|
||||
/* tile might only contain label layers */
|
||||
if (layers == null)
|
||||
if (buckets == null)
|
||||
return 0;
|
||||
|
||||
if (!layers.compile(true)) {
|
||||
layers.clear();
|
||||
if (!buckets.compile(true)) {
|
||||
buckets.clear();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -152,8 +152,8 @@ public class VectorTileRenderer extends TileRenderer {
|
||||
|
||||
/* use holder proxy when it is set */
|
||||
RenderBuckets buckets = (tile.holder == null)
|
||||
? tile.getLayers()
|
||||
: tile.holder.getLayers();
|
||||
? tile.getBuckets()
|
||||
: tile.holder.getBuckets();
|
||||
|
||||
if (buckets == null || buckets.vbo == null)
|
||||
return;
|
||||
|
@ -193,7 +193,7 @@ public class BuildingRenderer extends ExtrusionRenderer {
|
||||
}
|
||||
|
||||
private static ExtrusionBuckets getLayer(MapTile t) {
|
||||
RenderBuckets layers = t.getLayers();
|
||||
RenderBuckets layers = t.getBuckets();
|
||||
if (layers != null && !t.state(READY | NEW_DATA))
|
||||
return null;
|
||||
|
||||
|
@ -58,12 +58,12 @@ public class TestTileLayer extends TileLayer {
|
||||
@Override
|
||||
public boolean loadTile(MapTile tile) {
|
||||
log.debug("load tile " + tile);
|
||||
RenderBuckets layers = new RenderBuckets();
|
||||
tile.data = layers;
|
||||
RenderBuckets buckets = new RenderBuckets();
|
||||
tile.data = buckets;
|
||||
|
||||
LineBucket ll = layers.getLineBucket(0);
|
||||
ll.line = mLineStyle;
|
||||
ll.scale = 2;
|
||||
LineBucket lb = buckets.getLineBucket(0);
|
||||
lb.line = mLineStyle;
|
||||
lb.scale = 2;
|
||||
|
||||
int m = 20;
|
||||
int s = Tile.SIZE - m * 2;
|
||||
@ -77,7 +77,7 @@ public class TestTileLayer extends TileLayer {
|
||||
g.addPoint(s, m);
|
||||
g.addPoint(m, m);
|
||||
|
||||
ll.addLine(g);
|
||||
lb.addLine(g);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -197,7 +197,8 @@ public class VectorTileLayer extends TileLayer {
|
||||
}
|
||||
|
||||
public void callHooksComplete(MapTile tile, boolean success) {
|
||||
/* cannot use simple iterater as this function is called concurently */
|
||||
/* NB: cannot use internal iterater as this function
|
||||
* is called concurently by TileLoaders */
|
||||
|
||||
LList<TileLoaderThemeHook> th = mLoaderThemeHooks.head();
|
||||
while (th != null) {
|
||||
|
@ -62,16 +62,16 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
/** currently processed MapElement */
|
||||
protected MapElement mElement;
|
||||
|
||||
/** current line layer (will be used for outline layers) */
|
||||
protected LineBucket mCurLineLayer;
|
||||
/** current line bucket (will be used for outline bucket) */
|
||||
protected LineBucket mCurLineBucket;
|
||||
|
||||
/** Current layer for adding elements */
|
||||
protected int mCurLayer;
|
||||
/** Current bucket for adding elements */
|
||||
protected int mCurBucket;
|
||||
|
||||
/** Line-scale-factor depending on zoom and latitude */
|
||||
protected float mLineScale = 1.0f;
|
||||
|
||||
protected RenderBuckets mLayers;
|
||||
protected RenderBuckets mBuckets;
|
||||
|
||||
private final VectorTileLayer mTileLayer;
|
||||
|
||||
@ -109,8 +109,8 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
|
||||
/* scale line width relative to latitude + PI * thumb */
|
||||
mLineScale *= 0.4f + 0.6f * ((float) Math.sin(Math.abs(lat) * (Math.PI / 180)));
|
||||
mLayers = new RenderBuckets();
|
||||
tile.data = mLayers;
|
||||
mBuckets = new RenderBuckets();
|
||||
tile.data = mBuckets;
|
||||
|
||||
try {
|
||||
/* query data source, which calls process() callback */
|
||||
@ -130,8 +130,8 @@ 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();
|
||||
/* finish buckets- tessellate and cleanup on worker-thread */
|
||||
mBuckets.prepare();
|
||||
|
||||
super.completed(result);
|
||||
|
||||
@ -177,7 +177,7 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
if (isCanceled() || mTile.state(CANCEL))
|
||||
return;
|
||||
|
||||
if (mTileLayer.callProcessHooks(mTile, mLayers, element))
|
||||
if (mTileLayer.callProcessHooks(mTile, mBuckets, element))
|
||||
return;
|
||||
|
||||
TagSet tags = filterTags(element.tags);
|
||||
@ -190,31 +190,16 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
if (element.type == GeometryType.POINT) {
|
||||
renderNode(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||
} else {
|
||||
mCurLayer = getValidLayer(element.layer) * renderTheme.getLevels();
|
||||
mCurBucket = getValidLayer(element.layer) * renderTheme.getLevels();
|
||||
renderWay(renderTheme.matchElement(element.type, tags, mTile.zoomLevel));
|
||||
}
|
||||
clearState();
|
||||
}
|
||||
|
||||
// private final static LineStyle DEBUG_LINE =
|
||||
// new LineStyle(Integer.MAX_VALUE / 12, Color.MAGENTA, 1.2f);
|
||||
//
|
||||
// private final static TextStyle DEBUG_TEXT = new TextBuilder()
|
||||
// .setFontSize(12)
|
||||
// .setColor(Color.RED)
|
||||
// .setCaption(true)
|
||||
// .setTextKey(Tag.KEY_NAME)
|
||||
// .build();
|
||||
|
||||
protected void renderWay(RenderStyle[] style) {
|
||||
if (style == null) {
|
||||
// DEBUG_LINE.renderWay(this);
|
||||
// String t = mElement.tags.toString();
|
||||
// mElement.tags.clear();
|
||||
// mElement.tags.add(new Tag(Tag.KEY_NAME, t));
|
||||
// DEBUG_TEXT.renderWay(this);
|
||||
if (style == null)
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0, n = style.length; i < n; i++)
|
||||
style[i].renderWay(this);
|
||||
}
|
||||
@ -228,54 +213,54 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
}
|
||||
|
||||
protected void clearState() {
|
||||
mCurLineLayer = null;
|
||||
mCurLineBucket = null;
|
||||
mElement = null;
|
||||
}
|
||||
|
||||
/*** RenderThemeCallback ***/
|
||||
@Override
|
||||
public void renderWay(LineStyle line, int level) {
|
||||
int numLayer = mCurLayer + level;
|
||||
int nLevel = mCurBucket + level;
|
||||
|
||||
if (line.stipple == 0) {
|
||||
if (line.outline && mCurLineLayer == null) {
|
||||
if (line.outline && mCurLineBucket == null) {
|
||||
log.debug("missing line for outline! " + mElement.tags
|
||||
+ " lvl:" + level + " layer:" + mElement.layer);
|
||||
return;
|
||||
}
|
||||
|
||||
LineBucket ll = mLayers.getLineBucket(numLayer);
|
||||
LineBucket lb = mBuckets.getLineBucket(nLevel);
|
||||
|
||||
if (ll.line == null) {
|
||||
ll.line = line;
|
||||
ll.scale = line.fixed ? 1 : mLineScale;
|
||||
ll.setExtents(-4, Tile.SIZE + 4);
|
||||
if (lb.line == null) {
|
||||
lb.line = line;
|
||||
lb.scale = line.fixed ? 1 : mLineScale;
|
||||
lb.setExtents(-4, Tile.SIZE + 4);
|
||||
}
|
||||
|
||||
if (line.outline) {
|
||||
ll.addOutline(mCurLineLayer);
|
||||
lb.addOutline(mCurLineBucket);
|
||||
return;
|
||||
}
|
||||
|
||||
ll.addLine(mElement);
|
||||
lb.addLine(mElement);
|
||||
|
||||
/* keep reference for outline layer(s) */
|
||||
mCurLineLayer = ll;
|
||||
mCurLineBucket = lb;
|
||||
|
||||
} else {
|
||||
LineTexBucket ll = mLayers.getLineTexBucket(numLayer);
|
||||
LineTexBucket lb = mBuckets.getLineTexBucket(nLevel);
|
||||
|
||||
if (ll.line == null) {
|
||||
ll.line = line;
|
||||
if (lb.line == null) {
|
||||
lb.line = line;
|
||||
|
||||
float w = line.width;
|
||||
if (!line.fixed)
|
||||
w *= mLineScale;
|
||||
|
||||
ll.width = w;
|
||||
lb.width = w;
|
||||
}
|
||||
|
||||
ll.addLine(mElement);
|
||||
lb.addLine(mElement);
|
||||
}
|
||||
}
|
||||
|
||||
@ -285,26 +270,27 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
|
||||
@Override
|
||||
public void renderArea(AreaStyle area, int level) {
|
||||
int numLayer = mCurLayer + level;
|
||||
int nLevel = mCurBucket + level;
|
||||
|
||||
if (USE_MESH_POLY) {
|
||||
MeshBucket l = mLayers.getMeshBucket(numLayer);
|
||||
l.area = area;
|
||||
l.addMesh(mElement);
|
||||
MeshBucket mb = mBuckets.getMeshBucket(nLevel);
|
||||
mb.area = area;
|
||||
mb.addMesh(mElement);
|
||||
} else {
|
||||
PolygonBucket l = mLayers.getPolygonBucket(numLayer);
|
||||
l.area = area;
|
||||
l.addPolygon(mElement.points, mElement.index);
|
||||
PolygonBucket pb = mBuckets.getPolygonBucket(nLevel);
|
||||
pb.area = area;
|
||||
pb.addPolygon(mElement.points, mElement.index);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderSymbol(SymbolStyle symbol) {
|
||||
mTileLayer.callThemeHooks(mTile, mLayers, mElement, symbol, 0);
|
||||
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, symbol, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderExtrusion(ExtrusionStyle extrusion, int level) {
|
||||
mTileLayer.callThemeHooks(mTile, mLayers, mElement, extrusion, level);
|
||||
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, extrusion, level);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -313,6 +299,6 @@ public class VectorTileLoader extends TileLoader implements IRenderTheme.Callbac
|
||||
|
||||
@Override
|
||||
public void renderText(TextStyle text) {
|
||||
mTileLayer.callThemeHooks(mTile, mLayers, mElement, text, 0);
|
||||
mTileLayer.callThemeHooks(mTile, mBuckets, mElement, text, 0);
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ class TextRenderer extends BucketRenderer {
|
||||
setMatrix(v, false);
|
||||
|
||||
for (RenderBucket l = buckets.get(); l != null;)
|
||||
l = TextureBucket.Renderer.draw(buckets, l, v, scale);
|
||||
l = TextureBucket.Renderer.draw(l, v, scale);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ public abstract class BucketRenderer extends LayerRenderer {
|
||||
project = false;
|
||||
setMatrix(v, project);
|
||||
}
|
||||
b = TextureBucket.Renderer.draw(buckets, b, v, div);
|
||||
b = TextureBucket.Renderer.draw(b, v, div);
|
||||
break;
|
||||
default:
|
||||
log.error("invalid bucket {}", b.type);
|
||||
|
@ -117,7 +117,7 @@ public class GridRenderer extends BucketRenderer {
|
||||
int x = (int) (v.pos.x * z);
|
||||
int y = (int) (v.pos.y * z);
|
||||
|
||||
/* update layers when map moved by at least one tile */
|
||||
/* update buckets when map moved by at least one tile */
|
||||
if (x == mCurX && y == mCurY && z == mCurZ)
|
||||
return;
|
||||
|
||||
|
@ -192,30 +192,30 @@ public class BitmapBucket extends TextureBucket {
|
||||
shader = new Shader("texture_alpha");
|
||||
}
|
||||
|
||||
public static RenderBucket draw(RenderBucket renderElement, GLViewport v,
|
||||
public static RenderBucket draw(RenderBucket b, GLViewport v,
|
||||
float scale, float alpha) {
|
||||
|
||||
GLState.blend(true);
|
||||
Shader s = shader;
|
||||
s.useProgram();
|
||||
|
||||
TextureBucket tl = (TextureBucket) renderElement;
|
||||
TextureBucket tb = (TextureBucket) b;
|
||||
|
||||
GL.glUniform1f(s.uAlpha, alpha);
|
||||
v.mvp.setAsUniform(s.uMVP);
|
||||
|
||||
MapRenderer.bindQuadIndicesVBO(true);
|
||||
|
||||
for (TextureItem t = tl.textures; t != null; t = t.next) {
|
||||
for (TextureItem t = tb.textures; t != null; t = t.next) {
|
||||
|
||||
t.bind();
|
||||
|
||||
int maxIndices = MapRenderer.maxQuads * INDICES_PER_SPRITE;
|
||||
|
||||
// draw up to maxVertices in each iteration
|
||||
// draw up to maxVertices in each iteration */
|
||||
for (int i = 0; i < t.indices; i += maxIndices) {
|
||||
// to.offset * (24(shorts) * 2(short-bytes) / 6(indices) == 8)
|
||||
int off = (t.offset + i) * 8 + tl.vertexOffset;
|
||||
int off = (t.offset + i) * 8 + tb.vertexOffset;
|
||||
|
||||
GL.glVertexAttribPointer(s.aPos, 2,
|
||||
GL20.GL_SHORT, false, 12, off);
|
||||
@ -234,7 +234,7 @@ public class BitmapBucket extends TextureBucket {
|
||||
|
||||
MapRenderer.bindQuadIndicesVBO(false);
|
||||
|
||||
return renderElement.next;
|
||||
return b.next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -565,12 +565,9 @@ public final class LineBucket extends RenderBucket {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static RenderBucket draw(RenderBucket curLayer, GLViewport v,
|
||||
public static RenderBucket draw(RenderBucket b, GLViewport v,
|
||||
float scale, RenderBuckets buckets) {
|
||||
|
||||
if (curLayer == null)
|
||||
return null;
|
||||
|
||||
/* simple line shader does not take forward shortening into
|
||||
* account. only used when tilt is 0. */
|
||||
int mode = v.pos.tilt < 1 ? 1 : 0;
|
||||
@ -619,13 +616,12 @@ public final class LineBucket extends RenderBucket {
|
||||
float heightOffset = 0;
|
||||
GL.glUniform1f(uLineHeight, heightOffset);
|
||||
|
||||
RenderBucket l = curLayer;
|
||||
for (; l != null && l.type == RenderBucket.LINE; l = l.next) {
|
||||
LineBucket ll = (LineBucket) l;
|
||||
LineStyle line = ll.line.current();
|
||||
for (; b != null && b.type == RenderBucket.LINE; b = b.next) {
|
||||
LineBucket lb = (LineBucket) b;
|
||||
LineStyle line = lb.line.current();
|
||||
|
||||
if (ll.heightOffset != heightOffset) {
|
||||
heightOffset = ll.heightOffset;
|
||||
if (lb.heightOffset != heightOffset) {
|
||||
heightOffset = lb.heightOffset;
|
||||
|
||||
GL.glUniform1f(uLineHeight, heightOffset /
|
||||
MercatorProjection.groundResolution(v.pos));
|
||||
@ -652,7 +648,7 @@ public final class LineBucket extends RenderBucket {
|
||||
if (line.fixed) {
|
||||
width = Math.max(line.width, 1) / scale;
|
||||
} else {
|
||||
width = ll.scale * line.width / variableScale;
|
||||
width = lb.scale * line.width / variableScale;
|
||||
}
|
||||
|
||||
GL.glUniform1f(uLineWidth,
|
||||
@ -668,13 +664,13 @@ public final class LineBucket extends RenderBucket {
|
||||
}
|
||||
|
||||
/* Cap mode */
|
||||
if (ll.scale < 1.5 /* || ll.line.fixed */) {
|
||||
if (lb.scale < 1.5 /* || ll.line.fixed */) {
|
||||
|
||||
if (capMode != CAP_THIN) {
|
||||
capMode = CAP_THIN;
|
||||
GL.glUniform1f(uLineMode, capMode);
|
||||
}
|
||||
} else if (ll.roundCap) {
|
||||
} else if (lb.roundCap) {
|
||||
if (capMode != CAP_ROUND) {
|
||||
capMode = CAP_ROUND;
|
||||
GL.glUniform1f(uLineMode, capMode);
|
||||
@ -685,14 +681,14 @@ public final class LineBucket extends RenderBucket {
|
||||
}
|
||||
|
||||
GL.glDrawArrays(GL20.GL_TRIANGLE_STRIP,
|
||||
l.vertexOffset, l.numVertices);
|
||||
b.vertexOffset, b.numVertices);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* draw LineLayers references by this outline */
|
||||
|
||||
for (LineBucket ref = ll.outlines; ref != null; ref = ref.outlines) {
|
||||
for (LineBucket ref = lb.outlines; ref != null; ref = ref.outlines) {
|
||||
LineStyle core = ref.line.current();
|
||||
|
||||
// core width
|
||||
@ -705,7 +701,7 @@ public final class LineBucket extends RenderBucket {
|
||||
if (line.fixed) {
|
||||
width += line.width / scale;
|
||||
} else {
|
||||
width += ll.scale * line.width / variableScale;
|
||||
width += lb.scale * line.width / variableScale;
|
||||
}
|
||||
|
||||
GL.glUniform1f(uLineWidth,
|
||||
@ -736,7 +732,7 @@ public final class LineBucket extends RenderBucket {
|
||||
}
|
||||
}
|
||||
|
||||
return l;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -94,10 +94,10 @@ public final class LineTexBucket extends RenderBucket {
|
||||
|
||||
protected boolean mRandomizeOffset = true;
|
||||
|
||||
LineTexBucket(int layer) {
|
||||
LineTexBucket(int level) {
|
||||
super(TEXLINE);
|
||||
|
||||
this.level = layer;
|
||||
this.level = level;
|
||||
this.evenSegment = true;
|
||||
}
|
||||
|
||||
@ -300,8 +300,8 @@ public final class LineTexBucket extends RenderBucket {
|
||||
private final static int STRIDE = 12;
|
||||
private final static int LEN_OFFSET = 8;
|
||||
|
||||
public static RenderBucket draw(RenderBucket curLayer, GLViewport v,
|
||||
float div, RenderBuckets layers) {
|
||||
public static RenderBucket draw(RenderBucket b, GLViewport v,
|
||||
float div, RenderBuckets buckets) {
|
||||
|
||||
//if (shader == 0)
|
||||
// return curLayer.next;
|
||||
@ -334,7 +334,7 @@ public final class LineTexBucket extends RenderBucket {
|
||||
GL.glVertexAttribPointer(shader.aFlip, 1,
|
||||
GL20.GL_BYTE, false, 0, 0);
|
||||
|
||||
layers.vbo.bind();
|
||||
buckets.vbo.bind();
|
||||
|
||||
float scale = (float) v.pos.getZoomScale();
|
||||
|
||||
@ -342,10 +342,9 @@ public final class LineTexBucket extends RenderBucket {
|
||||
|
||||
//GL.glBindTexture(GL20.GL_TEXTURE_2D, mTexID[0]);
|
||||
|
||||
RenderBucket l = curLayer;
|
||||
for (; l != null && l.type == TEXLINE; l = l.next) {
|
||||
LineTexBucket ll = (LineTexBucket) l;
|
||||
LineStyle line = ll.line.current();
|
||||
for (; b != null && b.type == TEXLINE; b = b.next) {
|
||||
LineTexBucket lb = (LineTexBucket) b;
|
||||
LineStyle line = lb.line.current();
|
||||
|
||||
GLUtils.setColor(shader.uColor, line.stippleColor, 1);
|
||||
GLUtils.setColor(shader.uBgColor, line.color, 1);
|
||||
@ -361,21 +360,21 @@ public final class LineTexBucket extends RenderBucket {
|
||||
//GL.glUniform1f(hScale, scale);
|
||||
|
||||
/* keep line width fixed */
|
||||
GL.glUniform1f(shader.uWidth, ll.width / s * COORD_SCALE_BY_DIR_SCALE);
|
||||
GL.glUniform1f(shader.uWidth, lb.width / s * COORD_SCALE_BY_DIR_SCALE);
|
||||
|
||||
/* add offset vertex */
|
||||
int vOffset = -STRIDE;
|
||||
|
||||
// TODO interleave 1. and 2. pass to improve vertex cache usage?
|
||||
/* first pass */
|
||||
int allIndices = (ll.evenQuads * 6);
|
||||
int allIndices = (lb.evenQuads * 6);
|
||||
for (int i = 0; i < allIndices; i += maxIndices) {
|
||||
int numIndices = allIndices - i;
|
||||
if (numIndices > maxIndices)
|
||||
numIndices = maxIndices;
|
||||
|
||||
/* i / 6 * (24 shorts per block * 2 short bytes) */
|
||||
int add = (l.vertexOffset + i * 8) + vOffset;
|
||||
int add = (b.vertexOffset + i * 8) + vOffset;
|
||||
|
||||
GL.glVertexAttribPointer(aPos0, 4, GL20.GL_SHORT, false, STRIDE,
|
||||
add + STRIDE);
|
||||
@ -394,13 +393,13 @@ public final class LineTexBucket extends RenderBucket {
|
||||
}
|
||||
|
||||
/* second pass */
|
||||
allIndices = (ll.oddQuads * 6);
|
||||
allIndices = (lb.oddQuads * 6);
|
||||
for (int i = 0; i < allIndices; i += maxIndices) {
|
||||
int numIndices = allIndices - i;
|
||||
if (numIndices > maxIndices)
|
||||
numIndices = maxIndices;
|
||||
/* i / 6 * (24 shorts per block * 2 short bytes) */
|
||||
int add = (l.vertexOffset + i * 8) + vOffset;
|
||||
int add = (b.vertexOffset + i * 8) + vOffset;
|
||||
|
||||
GL.glVertexAttribPointer(aPos0, 4, GL20.GL_SHORT, false, STRIDE,
|
||||
add + 2 * STRIDE);
|
||||
@ -428,7 +427,7 @@ public final class LineTexBucket extends RenderBucket {
|
||||
|
||||
//GL.glBindTexture(GL20.GL_TEXTURE_2D, 0);
|
||||
|
||||
return l;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -317,15 +317,15 @@ public final class PolygonBucket extends RenderBucket {
|
||||
static LineClipper mScreenClip = new LineClipper(-1, -1, 1, 1);
|
||||
|
||||
/**
|
||||
* draw polygon layers (until layer.next is not polygon layer)
|
||||
* draw polygon buckets (until bucket.next is not polygon bucket)
|
||||
* using stencil buffer method
|
||||
*
|
||||
* @param renderElement
|
||||
* @param buckets
|
||||
* layer to draw (referencing vertices in current vbo)
|
||||
* @param v
|
||||
* GLViewport
|
||||
* @param pos
|
||||
* used to fade layers according to 'fade' in
|
||||
* used to fade buckets according to 'fade' in
|
||||
* layer.area style
|
||||
* @param div
|
||||
* scale relative to 'base scale' of the tile
|
||||
@ -338,7 +338,7 @@ public final class PolygonBucket extends RenderBucket {
|
||||
* @return
|
||||
* next layer
|
||||
*/
|
||||
public static RenderBucket draw(RenderBucket renderElement, GLViewport v,
|
||||
public static RenderBucket draw(RenderBucket buckets, GLViewport v,
|
||||
float div, boolean first) {
|
||||
|
||||
GLState.test(false, true);
|
||||
@ -361,12 +361,12 @@ public final class PolygonBucket extends RenderBucket {
|
||||
|
||||
byte stencilMask = 0;
|
||||
|
||||
RenderBucket l = renderElement;
|
||||
for (; l != null && l.type == POLYGON; l = l.next) {
|
||||
PolygonBucket pl = (PolygonBucket) l;
|
||||
AreaStyle area = pl.area.current();
|
||||
RenderBucket b = buckets;
|
||||
for (; b != null && b.type == POLYGON; b = b.next) {
|
||||
PolygonBucket pb = (PolygonBucket) b;
|
||||
AreaStyle area = pb.area.current();
|
||||
|
||||
/* fade out polygon layers (set in RenderTheme) */
|
||||
/* fade out polygon bucket (set in RenderTheme) */
|
||||
if (area.fadeScale > 0 && area.fadeScale > zoom)
|
||||
continue;
|
||||
|
||||
@ -392,7 +392,7 @@ public final class PolygonBucket extends RenderBucket {
|
||||
start = cur = 0;
|
||||
}
|
||||
|
||||
mAreaLayer[cur] = pl;
|
||||
mAreaLayer[cur] = pb;
|
||||
|
||||
/* set stencil mask to draw to */
|
||||
int stencil = 1 << cur++;
|
||||
@ -406,9 +406,9 @@ public final class PolygonBucket extends RenderBucket {
|
||||
GL.glStencilMask(stencilMask);
|
||||
}
|
||||
|
||||
GL.glDrawArrays(GL_TRIANGLE_FAN, l.vertexOffset, l.numVertices);
|
||||
GL.glDrawArrays(GL_TRIANGLE_FAN, b.vertexOffset, b.numVertices);
|
||||
|
||||
/* draw up to 7 layers into stencil buffer */
|
||||
/* draw up to 7 buckets into stencil buffer */
|
||||
if (cur == STENCIL_BITS - 1) {
|
||||
//log.debug("fill1 {} {}", start, cur);
|
||||
fillPolygons(v, start, cur, zoom, scale, div);
|
||||
@ -417,7 +417,7 @@ public final class PolygonBucket extends RenderBucket {
|
||||
mClear = true;
|
||||
start = cur = 0;
|
||||
|
||||
if (l.next != null && l.next.type == POLYGON) {
|
||||
if (b.next != null && b.next.type == POLYGON) {
|
||||
setShader(polyShader, v.mvp, false);
|
||||
stencilMask = 0;
|
||||
}
|
||||
@ -432,14 +432,14 @@ public final class PolygonBucket extends RenderBucket {
|
||||
|
||||
if (!drawn) {
|
||||
/* fillPolygons would re-enable color-mask
|
||||
* but it's possible that all polygon layers
|
||||
* but it's possible that all polygon buckets
|
||||
* were skipped */
|
||||
GL.glColorMask(true, true, true, true);
|
||||
GL.glStencilMask(0x00);
|
||||
}
|
||||
|
||||
mCount = cur;
|
||||
return l;
|
||||
return b;
|
||||
}
|
||||
|
||||
public static void clip(GLMatrix mvp, int clipMode) {
|
||||
@ -473,7 +473,7 @@ public final class PolygonBucket extends RenderBucket {
|
||||
GL.glStencilMask(0xFF);
|
||||
|
||||
/* Draw clip-region into depth and stencil buffer.
|
||||
* This is used for tile line and polygon layers.
|
||||
* This is used for tile line and polygon buckets.
|
||||
*
|
||||
* Together with depth test (GL_LESS) this ensures to
|
||||
* only draw where no other tile has drawn yet. */
|
||||
|
@ -72,8 +72,8 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
|
||||
// }
|
||||
|
||||
/**
|
||||
* For line- and polygon-layers this is the offset
|
||||
* of VERTICES in its layers.vbo.
|
||||
* For line- and polygon-buckets this is the offset
|
||||
* of VERTICES in its bucket.vbo.
|
||||
* For all other types it is the byte offset in vbo.
|
||||
* FIXME - always use byte offset?
|
||||
*/
|
||||
|
@ -107,23 +107,22 @@ public abstract class TextureBucket extends RenderBucket {
|
||||
pool.init(0);
|
||||
}
|
||||
|
||||
public static RenderBucket draw(RenderBuckets layers, RenderBucket l,
|
||||
GLViewport v, float scale) {
|
||||
public static RenderBucket draw(RenderBucket b, GLViewport v, float scale) {
|
||||
|
||||
GLState.test(false, false);
|
||||
GLState.blend(true);
|
||||
|
||||
shader.useProgram();
|
||||
|
||||
TextureBucket tl = (TextureBucket) l;
|
||||
GL.glUniform1f(shader.uScale, tl.fixed ? 1 / scale : 1);
|
||||
TextureBucket tb = (TextureBucket) b;
|
||||
GL.glUniform1f(shader.uScale, tb.fixed ? 1 / scale : 1);
|
||||
|
||||
v.proj.setAsUniform(shader.uProj);
|
||||
v.mvp.setAsUniform(shader.uMV);
|
||||
|
||||
MapRenderer.bindQuadIndicesVBO(true);
|
||||
|
||||
for (TextureItem t = tl.textures; t != null; t = t.next) {
|
||||
for (TextureItem t = tb.textures; t != null; t = t.next) {
|
||||
GL.glUniform2f(shader.uTexSize,
|
||||
1f / (t.width * COORD_SCALE),
|
||||
1f / (t.height * COORD_SCALE));
|
||||
@ -134,7 +133,7 @@ public abstract class TextureBucket extends RenderBucket {
|
||||
for (int i = 0; i < t.indices; i += maxIndices) {
|
||||
/* to.offset * (24(shorts) * 2(short-bytes)
|
||||
* / 6(indices) == 8) */
|
||||
int off = (t.offset + i) * 8 + tl.vertexOffset;
|
||||
int off = (t.offset + i) * 8 + tb.vertexOffset;
|
||||
|
||||
GL.glVertexAttribPointer(shader.aPos, 4,
|
||||
GL20.GL_SHORT,
|
||||
@ -156,7 +155,7 @@ public abstract class TextureBucket extends RenderBucket {
|
||||
|
||||
MapRenderer.bindQuadIndicesVBO(false);
|
||||
|
||||
return l.next;
|
||||
return b.next;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user