X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2Fgraphics%2Fgraphics.cpp;h=d7959614273238a3ddb64f460c97b39bcc827f41;hb=b85b89ba9a2cb0373209e8117046fd308faf0202;hp=d9e1dcc4b8b68a5107833a664151dca7fba2cff8;hpb=58ac440e4d0acc51d7adb3e94726982bf138489b;p=physics.git diff --git a/src/graphics/graphics.cpp b/src/graphics/graphics.cpp index d9e1dcc..d795961 100644 --- a/src/graphics/graphics.cpp +++ b/src/graphics/graphics.cpp @@ -16,19 +16,26 @@ */ #include "graphics.h" -#include "../debug.h" + +#include +#include +using namespace pg; #include #include #include #include -#include "../mathw.h" +#include +using std::cerr; +using std::cout; +using std::endl; /// ***** Private Method Headers ***** void glDrawCircle(int); +void glDrawPolygon( const std::vector& points ); void sdlInit(); void glInit(); @@ -51,7 +58,7 @@ void graphics::drawCircle(float radius, const Vector2& pos, const float* color) { glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - glTranslatef(pos.x, pos.y, -1); + glTranslatef(pos.m_fX, pos.m_fY, -1); glScalef(radius, radius, radius); if(color != NULL) @@ -60,6 +67,21 @@ void graphics::drawCircle(float radius, const Vector2& pos, const float* color) 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 glDrawCircle(int pieces) @@ -76,6 +98,18 @@ void glDrawCircle(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) @@ -109,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); + */ }