From d23b0447823de7b8bb9d964d8eff3b2a255e2dd3 Mon Sep 17 00:00:00 2001 From: Eli Yukelzon Date: Wed, 5 Oct 2011 10:50:00 +0200 Subject: [PATCH] fill for polygon drawing --- cocos2dx/CCDrawingPrimitives.cpp | 10 ++++++---- cocos2dx/include/CCDrawingPrimitives.h | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cocos2dx/CCDrawingPrimitives.cpp b/cocos2dx/CCDrawingPrimitives.cpp index 9c413abf1f..f97c928969 100644 --- a/cocos2dx/CCDrawingPrimitives.cpp +++ b/cocos2dx/CCDrawingPrimitives.cpp @@ -136,8 +136,10 @@ void ccDrawLine(CCPoint origin, CCPoint destination) glEnable(GL_TEXTURE_2D); } - -void ccDrawPoly(const CCPoint *poli, int numberOfPoints, bool closePolygon) +void ccDrawPoly(const CCPoint *poli, int numberOfPoints, bool closePolygon){ + ccDrawPoly(poli,numberOfPoints,closePolygon,false); +} +void ccDrawPoly(const CCPoint *poli, int numberOfPoints, bool closePolygon, bool fill) { ccVertex2F* newPoint = new ccVertex2F[numberOfPoints]; if (! newPoint) @@ -190,11 +192,11 @@ void ccDrawPoly(const CCPoint *poli, int numberOfPoints, bool closePolygon) if( closePolygon ) { - glDrawArrays(GL_LINE_LOOP, 0, (GLsizei)numberOfPoints); + glDrawArrays(fill? GL_TRIANGLE_FAN : GL_LINE_LOOP, 0, numberOfPoints); } else { - glDrawArrays(GL_LINE_STRIP, 0, (GLsizei)numberOfPoints); + glDrawArrays(fill? GL_TRIANGLE_FAN : GL_LINE_STRIP, 0, numberOfPoints); } // restore default state diff --git a/cocos2dx/include/CCDrawingPrimitives.h b/cocos2dx/include/CCDrawingPrimitives.h index 2283c1c38a..f883e0fec5 100644 --- a/cocos2dx/include/CCDrawingPrimitives.h +++ b/cocos2dx/include/CCDrawingPrimitives.h @@ -63,6 +63,11 @@ The polygon can be closed or open */ void CC_DLL ccDrawPoly( const CCPoint *vertices, int numOfVertices, bool closePolygon ); +/** draws a poligon given a pointer to CCPoint coordiantes and the number of vertices measured in points. +The polygon can be closed or open and optionally filled with current GL color +*/ +void CC_DLL ccDrawPoly( const CCPoint *vertices, int numOfVertices, bool closePolygon , bool fill); + /** draws a circle given the center, radius and number of segments. */ void CC_DLL ccDrawCircle( CCPoint center, float radius, float angle, int segments, bool drawLineToCenter);