gldraw.cpp

changeset 60
961663d05463
parent 59
21eae5342dc6
child 62
915fc477cb6a
--- a/gldraw.cpp	Thu Mar 21 13:00:44 2013 +0200
+++ b/gldraw.cpp	Thu Mar 21 16:25:03 2013 +0200
@@ -25,18 +25,16 @@
 #include "bbox.h"
 #include "colors.h"
 
-#define GL_VERTEX(V) glVertex3d (V.x + g_faObjectOffset[0], \
-	-(V.y + g_faObjectOffset[1]), V.z + g_faObjectOffset[2]);
-
-double g_faObjectOffset[3];
+static double g_faObjectOffset[3];
+static double g_StoredBBoxSize;
 
 // =============================================================================
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
 renderer::renderer (QWidget* parent) {
 	parent = parent; // shhh, GCC
-	fRotX = fRotY = fRotZ = 0.0;
-	fZoom = 1.0;
+	fRotX = fRotY = fRotZ = 0.0f;
+	fZoom = 1.0f;
 }
 
 // =============================================================================
@@ -144,12 +142,6 @@
 	glPushMatrix ();
 		glLoadIdentity ();
 		
-		glTranslatef (
-			(g_BBox.v0.x + g_BBox.v1.x) / -2.0,
-			(g_BBox.v0.y + g_BBox.v1.y) / -2.0,
-			(g_BBox.v0.z + g_BBox.v1.z) / -2.0
-		);
-		
 		glTranslatef (0.0f, 0.0f, -5.0f);
 		glTranslatef (0.0f, 0.0f, -fZoom);
 		
@@ -176,10 +168,11 @@
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
 void renderer::compileObjects () {
-	
 	g_faObjectOffset[0] = -(g_BBox.v0.x + g_BBox.v1.x) / 2;
 	g_faObjectOffset[1] = -(g_BBox.v0.y + g_BBox.v1.y) / 2;
 	g_faObjectOffset[2] = -(g_BBox.v0.z + g_BBox.v1.z) / 2;
+	g_StoredBBoxSize = g_BBox.calcSize ();
+	printf ("bbox size is %f\n", g_StoredBBoxSize);
 	
 	if (!g_CurrentFile) {
 		printf ("renderer: no files loaded, cannot compile anything\n");
@@ -221,7 +214,7 @@
 			LDLine* line = static_cast<LDLine*> (obj);
 			glBegin (GL_LINES);
 			for (short i = 0; i < 2; ++i)
-				GL_VERTEX (line->vaCoords[i])
+				compileVertex (line->vaCoords[i]);
 			glEnd ();
 		}
 		break;
@@ -236,7 +229,7 @@
 			
 			glBegin (GL_LINES);
 			for (short i = 0; i < 2; ++i)
-				GL_VERTEX (line->vaCoords[i])
+				compileVertex (line->vaCoords[i]);
 			glEnd ();
 			
 			glDisable (GL_LINE_STIPPLE);
@@ -249,7 +242,7 @@
 			setObjectColor (obj, bBack);
 			glBegin (GL_TRIANGLES);
 			for (short i = 0; i < 3; ++i)
-				GL_VERTEX (tri->vaCoords[i])
+				compileVertex (tri->vaCoords[i]);
 			glEnd ();
 		}
 		break;
@@ -260,7 +253,7 @@
 			setObjectColor (obj, bBack);
 			glBegin (GL_QUADS);
 			for (short i = 0; i < 4; ++i)
-				GL_VERTEX (quad->vaCoords[i])
+				compileVertex (quad->vaCoords[i]);
 			glEnd ();
 		}
 		break;
@@ -273,6 +266,16 @@
 // =============================================================================
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
+void renderer::compileVertex (vertex& vrt) {
+	glVertex3d (
+		(vrt.x + g_faObjectOffset[0]) / g_StoredBBoxSize,
+		-(vrt.y + g_faObjectOffset[1]) / g_StoredBBoxSize,
+		(vrt.z + g_faObjectOffset[2]) / g_StoredBBoxSize);
+}
+
+// =============================================================================
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+// =============================================================================
 void renderer::clampAngle (double& fAngle) {
 	while (fAngle < 0)
 		fAngle += 360.0;

mercurial