1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
glDepthFunc(GL_LESS);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_QUADS);
for (int x = 16; x < 64; x++) {
for (int y = 16; y < 64; y++) {
float blockHeight = (float) ((double) this->tiles[x][y].height) / ((double) 2.0f);
glColor3f(this->tiles[x][y].color.red, this->tiles[x][y].color.green, this->tiles[x][y].color.blue);
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 0));
}
}
glEnd();
glDepthFunc(GL_LEQUAL);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(1.2f);
glBegin(GL_QUADS);
for (int x = 16; x < 64; x++) {
for (int y = 16; y < 64; y++) {
float blockHeight = (float) ((double) this->tiles[x][y].height) / ((double) 2.0f);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 0));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 1), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 0));
glVertex3f((float) (x + 0), blockHeight, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 1));
glVertex3f((float) (x + 0), 0.0f, (float) (y + 0));
}
}
glEnd();
|