draw both sides of tile as its rotating

This commit is contained in:
Josh Holtrop 2012-12-01 09:58:41 -05:00
parent 20953f9141
commit 13ee04baea

View File

@ -169,6 +169,7 @@ public class MyRenderer implements GLSurfaceView.Renderer
*/ */
GLES20.glClearColor(1.0f, 0.6f, 0.1f, 1.0f); GLES20.glClearColor(1.0f, 0.6f, 0.1f, 1.0f);
GLES20.glEnable(GLES20.GL_CULL_FACE);
} }
private void update_tiles(long elapsed) private void update_tiles(long elapsed)
@ -219,26 +220,32 @@ public class MyRenderer implements GLSurfaceView.Renderer
for (int x = 0; x < GRID_WIDTH; x++) for (int x = 0; x < GRID_WIDTH; x++)
{ {
Tile t = m_tiles[x][y]; Tile t = m_tiles[x][y];
Matrix.setIdentityM(m_modelview, 0); for (int side = 0; side < 2; side++)
Matrix.translateM(m_modelview, 0,
x + 0.5f - GRID_WIDTH / 2.0f,
y + 0.5f - GRID_HEIGHT / 2.0f,
-DISTANCE);
if (t.flipping)
{ {
Matrix.rotateM(m_modelview, 0, int t_side = t.side ? 1 : 0;
t.rotation, if (!t.flipping && (side == 1))
AXES[t.axis][0], AXES[t.axis][1], AXES[t.axis][2]); continue;
} Matrix.setIdentityM(m_modelview, 0);
GLES20.glUniformMatrix4fv( Matrix.translateM(m_modelview, 0,
GLES20.glGetUniformLocation(m_program, "modelview"), x + 0.5f - GRID_WIDTH / 2.0f,
1, false, m_modelview, 0); y + 0.5f - GRID_HEIGHT / 2.0f,
GLES20.glUniform1i( -DISTANCE);
GLES20.glGetUniformLocation(m_program, "side"), if (t.flipping)
t.side ? 1 : 0); {
Matrix.rotateM(m_modelview, 0,
t.rotation + side * 180.0f,
AXES[t.axis][0], AXES[t.axis][1], AXES[t.axis][2]);
}
GLES20.glUniformMatrix4fv(
GLES20.glGetUniformLocation(m_program, "modelview"),
1, false, m_modelview, 0);
GLES20.glUniform1i(
GLES20.glGetUniformLocation(m_program, "side"),
t_side ^ side);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4); GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4);
checkGLError("glDrawArrays"); checkGLError("glDrawArrays");
}
} }
} }