fix: BucketRenderer unified base/tex buckets
This commit is contained in:
parent
a60f326e16
commit
b057c56466
@ -77,12 +77,19 @@ public abstract class BucketRenderer extends LayerRenderer {
|
|||||||
|
|
||||||
float div = (float) (v.pos.scale / layerPos.scale);
|
float div = (float) (v.pos.scale / layerPos.scale);
|
||||||
|
|
||||||
setMatrix(v, true);
|
boolean project = true;
|
||||||
|
|
||||||
|
setMatrix(v, project);
|
||||||
|
|
||||||
for (RenderBucket b = buckets.get(); b != null;) {
|
for (RenderBucket b = buckets.get(); b != null;) {
|
||||||
|
|
||||||
buckets.bind();
|
buckets.bind();
|
||||||
|
|
||||||
|
if (!project && b.type != SYMBOL) {
|
||||||
|
project = true;
|
||||||
|
setMatrix(v, project);
|
||||||
|
}
|
||||||
|
|
||||||
switch (b.type) {
|
switch (b.type) {
|
||||||
case POLYGON:
|
case POLYGON:
|
||||||
b = PolygonBucket.Renderer.draw(b, v, 1, true);
|
b = PolygonBucket.Renderer.draw(b, v, 1, true);
|
||||||
@ -103,6 +110,10 @@ public abstract class BucketRenderer extends LayerRenderer {
|
|||||||
b = BitmapBucket.Renderer.draw(b, v, 1, 1);
|
b = BitmapBucket.Renderer.draw(b, v, 1, 1);
|
||||||
break;
|
break;
|
||||||
case SYMBOL:
|
case SYMBOL:
|
||||||
|
if (project) {
|
||||||
|
project = false;
|
||||||
|
setMatrix(v, project);
|
||||||
|
}
|
||||||
b = TextureBucket.Renderer.draw(buckets, b, v, div);
|
b = TextureBucket.Renderer.draw(buckets, b, v, div);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -135,6 +146,14 @@ public abstract class BucketRenderer extends LayerRenderer {
|
|||||||
* if true apply view- and projection, or just view otherwise.
|
* if true apply view- and projection, or just view otherwise.
|
||||||
*/
|
*/
|
||||||
protected void setMatrix(GLViewport v, boolean project) {
|
protected void setMatrix(GLViewport v, boolean project) {
|
||||||
|
setMatrix(v, project, MapRenderer.COORD_SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setMatrix(GLViewport v, boolean project, float coordScale) {
|
||||||
|
setMatrix(v.mvp, v, project, coordScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setMatrix(GLMatrix mvp, GLViewport v, boolean project, float coordScale) {
|
||||||
MapPosition oPos = mMapPosition;
|
MapPosition oPos = mMapPosition;
|
||||||
|
|
||||||
double tileScale = Tile.SIZE * v.pos.scale;
|
double tileScale = Tile.SIZE * v.pos.scale;
|
||||||
@ -150,12 +169,11 @@ public abstract class BucketRenderer extends LayerRenderer {
|
|||||||
x -= 1.0;
|
x -= 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
v.mvp.setTransScale((float) (x * tileScale),
|
mvp.setTransScale((float) (x * tileScale),
|
||||||
(float) (y * tileScale),
|
(float) (y * tileScale),
|
||||||
(float) (v.pos.scale / oPos.scale)
|
(float) (v.pos.scale / oPos.scale) / coordScale);
|
||||||
/ MapRenderer.COORD_SCALE);
|
|
||||||
|
|
||||||
v.mvp.multiplyLhs(project ? v.viewproj : v.view);
|
mvp.multiplyLhs(project ? v.viewproj : v.view);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user