no need for polygonoffset 'factor', clip quad is always flat

This commit is contained in:
Hannes Janetzek 2013-04-30 13:21:31 +02:00
parent 728531d3b9
commit 80e45a3fa6

View File

@ -14,7 +14,6 @@
*/ */
package org.oscim.layers.tile; package org.oscim.layers.tile;
import static android.opengl.GLES20.GL_ARRAY_BUFFER;
import static android.opengl.GLES20.glStencilMask; import static android.opengl.GLES20.glStencilMask;
import static org.oscim.layers.tile.MapTile.STATE_READY; import static org.oscim.layers.tile.MapTile.STATE_READY;
@ -35,19 +34,18 @@ import android.opengl.GLES20;
/** /**
* This class is for rendering the Line- and PolygonLayers of visible MapTiles. * This class is for rendering the Line- and PolygonLayers of visible MapTiles.
* For * For visible tiles that do not have data available yet its parent in children
* visible tiles that do not have data available yet its parent in children
* tiles are rendered when available. * tiles are rendered when available.
* *
* @author Hannes Janetzek
*/ */
public class TileRenderer { public class TileRenderer {
//private final static String TAG = TileRenderer.class.getName(); private final static String TAG = TileRenderer.class.getName();
// used to increase polygon-offset for each tile drawn. // Counter increases polygon-offset for each tile drawn.
private static int mDrawCnt; private static int mOffsetCnt;
// used to not draw a tile twice per frame. // Current number of frames drawn, used to not draw a
// tile twice per frame.
private static int mDrawSerial = 0; private static int mDrawSerial = 0;
private static Matrices mMatrices; private static Matrices mMatrices;
@ -56,7 +54,7 @@ public class TileRenderer {
private static final Matrix4 mProjMatrix = new Matrix4(); private static final Matrix4 mProjMatrix = new Matrix4();
static void draw(MapTile[] tiles, int tileCnt, MapPosition pos, Matrices m, boolean fade) { static void draw(MapTile[] tiles, int tileCnt, MapPosition pos, Matrices m, boolean fade) {
mDrawCnt = 0; mOffsetCnt = -2048;
mMatrices = m; mMatrices = m;
mFaded = fade; mFaded = fade;
@ -64,8 +62,8 @@ public class TileRenderer {
// discard z projection from tilt // discard z projection from tilt
mProjMatrix.setValue(10, 0); mProjMatrix.setValue(10, 0);
mProjMatrix.setValue(14, 0); mProjMatrix.setValue(14, 0);
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT); GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT);
//GLES20.GL_STENCIL_BUFFER_BIT);
GLES20.glDepthFunc(GLES20.GL_LESS); GLES20.glDepthFunc(GLES20.GL_LESS);
@ -107,7 +105,7 @@ public class TileRenderer {
mDrawSerial++; mDrawSerial++;
// dont keep the ref... // clear reference
mMatrices = null; mMatrices = null;
} }
@ -127,7 +125,7 @@ public class TileRenderer {
return; return;
} }
GLES20.glBindBuffer(GL_ARRAY_BUFFER, t.layers.vbo.id); t.layers.vbo.bindArrayBuffer();
// place tile relative to map position // place tile relative to map position
int z = tile.zoomLevel; int z = tile.zoomLevel;
@ -146,11 +144,10 @@ public class TileRenderer {
m.mvp.multiplyMM(mProjMatrix, m.mvp); m.mvp.multiplyMM(mProjMatrix, m.mvp);
// set depth offset (used for clipping to tile boundaries) // set depth offset (used for clipping to tile boundaries)
GLES20.glPolygonOffset(1, mDrawCnt++); GLES20.glPolygonOffset(0, mOffsetCnt++);
if (mDrawCnt == 100)
mDrawCnt = 0;
// simple line shader does not take forward shortening into account // simple line shader does not take forward shortening into
// account. only used when tilt is 0.
int simpleShader = (pos.tilt < 1 ? 1 : 0); int simpleShader = (pos.tilt < 1 ? 1 : 0);
boolean clipped = false; boolean clipped = false;