X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2Fgraphics%2Fgraphics.cpp;h=afc4441b31dee027ed957b189d1a6a485b403382;hb=389bf8fdd7e1b8f4fe21e5a9fdb477d40d03d829;hp=a7196620ec7453ecc04c3e4aa125b3aaec77d506;hpb=44b079f8ee4a8f4a751a3a4e12b2a15a831786a4;p=physics.git
diff --git a/src/graphics/graphics.cpp b/src/graphics/graphics.cpp
index a719662..afc4441 100644
--- a/src/graphics/graphics.cpp
+++ b/src/graphics/graphics.cpp
@@ -1,48 +1,90 @@
+/*
+ * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
#include "graphics.h"
+#include
+#include
+using namespace bear;
+
#include
#include
#include
#include
-#include "../debug.h"
+#include
+using std::cerr;
+using std::cout;
+using std::endl;
-static const float PI = 3.1415926535897;
/// ***** Private Method Headers *****
-void drawCircle(int);
+
+void glDrawCircle(int);
+void glDrawPolygon( const std::vector& points );
void sdlInit();
void glInit();
-/// ***** Public Methods *****
+/// ***** Initializers/Cleaners *****
-void graphicsInit()
+void graphics::init()
{
sdlInit();
glInit();
}
-void graphicsCleanUp()
+void graphics::clean()
{
}
-void glDrawCircle(float radius, const Vector2* vec, const float* color)
+/// ***** Public Methods *****
+
+void graphics::drawCircle(float radius, const Vector2& pos, const float* color)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
- glTranslatef(vec->x, vec->y, -1);
+ glTranslatef(pos.m_fX, pos.m_fY, -1);
glScalef(radius, radius, radius);
if(color != NULL)
glColor3fv(color);
- drawCircle(32);
+ glDrawCircle(32);
+}
+
+void graphics::drawPolygon
+(
+ const std::vector& points,
+ const float* color
+)
+{
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ if(color != NULL)
+ glColor3fv(color);
+
+ glDrawPolygon(points);
}
/// ***** Private Methods *****
-void drawCircle(int pieces)
+void glDrawCircle(int pieces)
{
glBegin(GL_POLYGON);
for(int n = 0; n < pieces; n++)
@@ -56,6 +98,18 @@ void drawCircle(int pieces)
glEnd();
}
+void glDrawPolygon( const std::vector& points )
+{
+ glBegin(GL_POLYGON);
+ for(unsigned int n = 0; n < points.size(); n++)
+ {
+ const Vector2& vec = points.at(n);
+
+ glVertex3f(vec.m_fX, vec.m_fY, 0);
+ }
+ glEnd();
+}
+
void sdlInit()
{
if(SDL_Init(SDL_INIT_VIDEO) < 0)
@@ -89,4 +143,14 @@ void glInit()
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
+
+ // anti aliasing?
+ /*
+ glEnable(GL_BLEND);
+ glEnable(GL_POLYGON_SMOOTH_HINT);
+
+ glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);
+
+ glHint(GL_POLYGON_SMOOTH_HINT, GL_DONT_CARE);
+ */
}