enable glDepthMask before clearing depth buffer:

- fixes building rendering on nexus and asus tablet
This commit is contained in:
Hannes Janetzek 2013-01-09 01:06:37 +01:00
parent 4ac9fc3b95
commit 088f3e2385

View File

@ -98,7 +98,7 @@ public class ExtrusionOverlay extends RenderOverlay {
mTileSet = TileManager.getActiveTiles(mTileSet);
MapTile[] tiles = mTileSet.tiles;
// FIXME just release tiles in this case
if (mAlpha == 0) {
if (mAlpha == 0 || curPos.zoomLevel < 16) {
isReady = false;
return;
}
@ -170,8 +170,6 @@ public class ExtrusionOverlay extends RenderOverlay {
float div = FastMath.pow(tiles[0].zoomLevel - pos.zoomLevel);
int depthScale = 1;
int shaderMode = 1;
int uExtAlpha = hExtrusionAlpha[shaderMode];
int uExtColor = hExtrusionColor[shaderMode];
@ -220,16 +218,17 @@ public class ExtrusionOverlay extends RenderOverlay {
}
return;
}
GLES20.glDepthMask(true);
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT);
GLState.test(true, false);
GLES20.glUseProgram(extrusionProgram[shaderMode]);
GLState.enableVertexArrays(uExtVertexPosition, -1);
GLES20.glEnable(GLES20.GL_CULL_FACE);
GLES20.glCullFace(GLES20.GL_FRONT);
GLES20.glEnable(GLES20.GL_POLYGON_OFFSET_FILL);
GLES20.glDepthFunc(GLES20.GL_LESS);
GLES20.glDepthMask(true);
GLES20.glColorMask(false, false, false, false);
GLES20.glUniform1i(uExtMode, 0);
GLES20.glUniform4fv(uExtColor, 4, mColor, 0);
@ -239,7 +238,7 @@ public class ExtrusionOverlay extends RenderOverlay {
for (int i = 0; i < mTileCnt; i++) {
ExtrusionLayer el = (ExtrusionLayer) tiles[i].layers.extrusionLayers;
GLES20.glPolygonOffset(depthScale, GLRenderer.depthOffset(tiles[i]));
GLES20.glPolygonOffset(1, GLRenderer.depthOffset(tiles[i]));
setMatrix(pos, mv, proj, tiles[i], div);
GLES20.glUniformMatrix4fv(uExtMatrix, 1, false, mv, 0);
@ -264,7 +263,7 @@ public class ExtrusionOverlay extends RenderOverlay {
for (int i = 0; i < mTileCnt; i++) {
ExtrusionLayer el = (ExtrusionLayer) tiles[i].layers.extrusionLayers;
GLES20.glPolygonOffset(depthScale, GLRenderer.depthOffset(tiles[i]));
GLES20.glPolygonOffset(1, GLRenderer.depthOffset(tiles[i]));
setMatrix(pos, mv, proj, tiles[i], div);
GLES20.glUniformMatrix4fv(uExtMatrix, 1, false, mv, 0);
@ -305,7 +304,6 @@ public class ExtrusionOverlay extends RenderOverlay {
GLES20.glDisable(GLES20.GL_CULL_FACE);
GLES20.glDisable(GLES20.GL_POLYGON_OFFSET_FILL);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, 0);
}
private static void setMatrix(MapPosition mapPosition, float[] matrix, float[] proj,
@ -336,7 +334,7 @@ public class ExtrusionOverlay extends RenderOverlay {
private final float _r = 0xea;
private final float _g = 0xe8;
private final float _b = 0xe6;
private final float _o = 50;
private final float _o = 55;
private final float _s = 16;
private final float _l = 8;
private float mAlpha = 1;