remove depth-projection from viewproj for tile rendering, again

- fixes issue with flickering when proxy tiles are drawn,
  where the depth buffer is used to remember previous
  clipping areas
This commit is contained in:
Hannes Janetzek 2014-01-31 01:44:27 +01:00
parent e0e94f7286
commit 67d1813665

View File

@ -30,6 +30,7 @@ import org.oscim.core.MapPosition;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.renderer.BufferObject; import org.oscim.renderer.BufferObject;
import org.oscim.renderer.ElementRenderer; import org.oscim.renderer.ElementRenderer;
import org.oscim.renderer.GLMatrix;
import org.oscim.renderer.LayerRenderer; import org.oscim.renderer.LayerRenderer;
import org.oscim.renderer.MapRenderer; import org.oscim.renderer.MapRenderer;
import org.oscim.renderer.MapRenderer.Matrices; import org.oscim.renderer.MapRenderer.Matrices;
@ -68,6 +69,8 @@ public class TileRenderer extends LayerRenderer {
// tile twice per frame. // tile twice per frame.
private int mDrawSerial; private int mDrawSerial;
private int mClipMode; private int mClipMode;
private GLMatrix mViewProj = new GLMatrix();
private Matrices mMatrices; private Matrices mMatrices;
/** /**
@ -108,6 +111,15 @@ public class TileRenderer extends LayerRenderer {
mRenderAlpha = mAlpha; mRenderAlpha = mAlpha;
mRenderOverdraw = mOverdraw; mRenderOverdraw = mOverdraw;
/**
* discard depth projection from tilt, depth buffer
* is used for clipping
*/
mViewProj.copy(m.proj);
mViewProj.setValue(10, 0);
mViewProj.setValue(14, 0);
mViewProj.multiplyRhs(m.view);
int tileCnt = mDrawTiles.cnt; int tileCnt = mDrawTiles.cnt;
MapTile[] tiles = mDrawTiles.tiles; MapTile[] tiles = mDrawTiles.tiles;
@ -453,7 +465,7 @@ public class TileRenderer extends LayerRenderer {
Matrices m = mMatrices; Matrices m = mMatrices;
m.mvp.setTransScale(x, y, scale / MapRenderer.COORD_SCALE); m.mvp.setTransScale(x, y, scale / MapRenderer.COORD_SCALE);
m.mvp.multiplyLhs(m.viewproj); m.mvp.multiplyLhs(mViewProj);
boolean clipped = false; boolean clipped = false;
int mode = mClipMode; int mode = mClipMode;