From 7664cdd0015a7d16ea6fdb0b06fca1a23586f0c1 Mon Sep 17 00:00:00 2001 From: Ash Tyndall Date: Fri, 21 Oct 2011 13:50:22 +0800 Subject: [PATCH] --- globals.c | 5 +++-- globals.h | 1 + helper.c | 51 ++++++++++++--------------------------------------- 3 files changed, 16 insertions(+), 41 deletions(-) diff --git a/globals.c b/globals.c index 87a439d..a3c98f7 100644 --- a/globals.c +++ b/globals.c @@ -48,8 +48,9 @@ int moving, startx, starty; /* Recursion level for floor drawing */ int drawFloorRecurse = 8; -/* Size of floor, from -n to n */ -int floorSize = 200; +/* Size of floor, from -n to n, floorSize must be divisible by squareSize */ +int floorSize = 150; +float squareSize = 0.5; /* Current camera x, y, z coords */ GLfloat camx = 0.0, camy = 0.0, camz = 0.0, keyrot = 0.0; diff --git a/globals.h b/globals.h index 5a2b641..4c6c086 100644 --- a/globals.h +++ b/globals.h @@ -39,6 +39,7 @@ extern int drawFloorRecurse; /* Size of floor, from -n to n */ extern int floorSize; +extern float squareSize; /* Current camera position */ extern GLfloat camx, camy, camz, keyrot; diff --git a/helper.c b/helper.c index 460c44a..445e0cd 100644 --- a/helper.c +++ b/helper.c @@ -206,49 +206,22 @@ int makeSubmenuFromArray( const char *menuEntries[], unsigned int menuEntriesSiz return mainMenu; } -/** - * Recursive function to draw a square by drawing smaller and smaller - * divisions of the square, determined by drawFloorRecurse. - * @param recurseLevel Current level of recursion, only pass 0 - * @param x1 top-left x - * @param z1 top-left z - * @param x2 bottom-left x - * @param z2 bottom-left z - */ -void drawSquare(int recurseLevel, float x1, float z1, float x2, float z2) { - if ( drawFloorRecurse != recurseLevel ) { - // Calculate middle points - float xm = (x1 + x2) / 2.0; - float zm = (z1 + z2) / 2.0; - - // Increment recursion level - int rnew = recurseLevel + 1; - - // Split into four sub-quads - drawSquare(rnew, x1, z1, xm, zm); - drawSquare(rnew, x1, zm, xm, z2); - drawSquare(rnew, xm, zm, x2, z2); - drawSquare(rnew, xm, z1, x2, zm); - - } else { - // Draw square. - // **NOTE: We're drawing large strips, instead of squares, which might cause a lighting problem - glBegin(GL_QUADS); - //glNormal3f(0,1,0); - glColor3f(1.0, 1.0, 1.0); - glVertex3f(x1, 0.0, z1); - glVertex3f(x1, 0.0, z2); - glVertex3f(x2, 0.0, z2); - glVertex3f(x2, 0.0, z1); - glEnd(); - } -} - /** * Draw a floor by calling the drawSquare recursion */ void drawFloor() { - drawSquare(0, -floorSize, -floorSize, floorSize, floorSize); + glBegin(GL_QUADS); + for ( int x = -floorSize; x < floorSize; x++ ) { + for ( int y = -floorSize; y < floorSize; y++ ) { + glColor3f( 1.0, 1.0, 1.0 ); + glVertex2f( x*squareSize, y*squareSize ); + glVertex2f( (x+1)*squareSize, y*squareSize ); + glVertex2f( (x+1)*squareSize, (y+1)*squareSize ); + glVertex2f( x*squareSize, (y+1)*squareSize ); + + } + } + glEnd(); } /** -- 2.20.1