From 885eec73d504c05c05d7a26489aca115030f11f2 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek <hannes.janetzek@gmail.com> Date: Sat, 5 Jan 2013 08:31:25 +0100 Subject: [PATCH] cleanup, less bright buildings --- .../oscim/renderer/layer/ExtrusionLayer.java | 37 ++++++++----------- .../renderer/overlays/ExtrusionOverlay.java | 10 ++--- 2 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/org/oscim/renderer/layer/ExtrusionLayer.java b/src/org/oscim/renderer/layer/ExtrusionLayer.java index 8ad5b724..b8a34f15 100644 --- a/src/org/oscim/renderer/layer/ExtrusionLayer.java +++ b/src/org/oscim/renderer/layer/ExtrusionLayer.java @@ -273,7 +273,7 @@ public class ExtrusionLayer extends Layer { vertices[v + 3] = vertices[v + 7] = c; color1 = color2; - // check if polygon is convex + /* check if polygon is convex */ if (convex) { // TODO simple polys with only one concave arc // could be handled without special triangulation @@ -286,37 +286,36 @@ public class ExtrusionLayer extends Layer { convex = false; } - // check if face is within tile + /* check if face is within tile */ if (!mClipper.clip((int) cx, (int) cy, (int) nx, (int) ny)) { even = (even + 1) % 2; continue; } - // add ZigZagQuadIndices(tm) for sides - short[] indices = mCurIndices[even].vertices; - // index id relative to mCurIndices item - int ind = mCurIndices[even].used; - // indices for current face + /* add ZigZagQuadIndices(tm) for sides */ short vert = (short) (vOffset + (i - 2)); short s0 = vert++; short s1 = vert++; short s2 = vert++; short s3 = vert++; - if (ind == VertexPoolItem.SIZE) { - //mCurIndices[even].used = VertexPoolItem.SIZE; - mCurIndices[even].next = VertexPool.get(); - mCurIndices[even] = mCurIndices[even].next; - indices = mCurIndices[even].vertices; - ind = 0; - } - // connect last to first (when number of faces is even) if (!addFace && i == len) { s2 -= len; s3 -= len; } + short[] indices = mCurIndices[even].vertices; + // index id relative to mCurIndices item + int ind = mCurIndices[even].used; + + if (ind == VertexPoolItem.SIZE) { + mCurIndices[even].next = VertexPool.get(); + mCurIndices[even] = mCurIndices[even].next; + indices = mCurIndices[even].vertices; + ind = 0; + } + indices[ind + 0] = s0; indices[ind + 1] = s2; indices[ind + 2] = s1; @@ -326,9 +325,9 @@ public class ExtrusionLayer extends Layer { indices[ind + 5] = s3; mCurIndices[even].used += 6; - even = (even + 1) % 2; + even = (even == 0 ? 1 : 0); - // add roof outline indices + /* add roof outline indices */ VertexPoolItem it = mCurIndices[IND_OUTLINE]; if (it.used == VertexPoolItem.SIZE) { it.next = VertexPool.get(); @@ -407,10 +406,6 @@ public class ExtrusionLayer extends Layer { } } - public void render() { - - } - private static boolean initialized = false; private static ShortBuffer sBuf; private static FloatBuffer fBuf; diff --git a/src/org/oscim/renderer/overlays/ExtrusionOverlay.java b/src/org/oscim/renderer/overlays/ExtrusionOverlay.java index 67c513dc..8e0b98dc 100644 --- a/src/org/oscim/renderer/overlays/ExtrusionOverlay.java +++ b/src/org/oscim/renderer/overlays/ExtrusionOverlay.java @@ -256,21 +256,17 @@ public class ExtrusionOverlay extends RenderOverlay { // draw roof GLES20.glUniform1i(hExtrusionMode, 0); - //GLES20.glUniform4f(hExtrusionColor, 0.81f, 0.8f, 0.8f, 0.9f); GLES20.glUniform4fv(hExtrusionColor, 1, mRoofColor, 0); GLES20.glDrawElements(GLES20.GL_TRIANGLES, el.mIndiceCnt[2], GLES20.GL_UNSIGNED_SHORT, (el.mIndiceCnt[0] + el.mIndiceCnt[1]) * 2); // draw sides 1 - //GLES20.glUniform4f(hExtrusionColor, 0.8f, 0.8f, 0.8f, 1.0f); - //GLES20.glUniform4f(hExtrusionColor, 0.9f, 0.905f, 0.9f, 1.0f); GLES20.glUniform4fv(hExtrusionColor, 1, mColor, 0); GLES20.glUniform1i(hExtrusionMode, 1); GLES20.glDrawElements(GLES20.GL_TRIANGLES, el.mIndiceCnt[0], GLES20.GL_UNSIGNED_SHORT, 0); // draw sides 2 - //GLES20.glUniform4f(hExtrusionColor, 0.9f, 0.9f, 0.905f, 1.0f); GLES20.glUniform4fv(hExtrusionColor, 1, mColor2, 0); GLES20.glUniform1i(hExtrusionMode, 2); @@ -279,7 +275,7 @@ public class ExtrusionOverlay extends RenderOverlay { GLES20.glDepthFunc(GLES20.GL_LEQUAL); GLES20.glUniform1i(hExtrusionMode, 0); - GLES20.glUniform4f(hExtrusionColor, 0.65f, 0.65f, 0.65f, 0.98f); + GLES20.glUniform4f(hExtrusionColor, 0.7f, 0.7f, 0.7f, 1.0f); GLES20.glDrawElements(GLES20.GL_LINES, el.mIndiceCnt[3], GLES20.GL_UNSIGNED_SHORT, (el.mIndiceCnt[0] + el.mIndiceCnt[1] + el.mIndiceCnt[2]) * 2); @@ -334,10 +330,10 @@ public class ExtrusionOverlay extends RenderOverlay { + " color = u_color;" + " else if (u_mode == 1)" // sides 1 - use 0xff00 - + " color = vec4(u_color.rgb * (a_light.y / ff), 0.8);" + + " color = vec4(u_color.rgb * (a_light.y / ff), 0.85);" + " else" // sides 2 - use 0x00ff - + " color = vec4(u_color.rgb * (a_light.x / ff), 0.8);" + + " color = vec4(u_color.rgb * (a_light.x / ff), 0.85);" + "}"; // final static String extrusionVertexAnimShader = ""