void draw() { background(204); if (currentMode == 1) { drawStrip(); } else if (currentMode == 2) { drawFan(); } }
/** * There must be one glEnd for every glBegin. * glVertex only works between Begin & End pairs. */ void bkgl::bkEnd() { switch (pointMode) { case GL_LINE_LOOP: drawStrip(firstPoint); break; default: break; } pointMode = -1; clearSavedPoints(); }
void render(void) { DMAPoolBuffer *dma = updateVertices(0.2, 0.8, 0.2, 0, 0); int row; trashBuffer(); uploadRow(0, dma); for (row = 1; row < MESH_HEIGHT; row++) { uploadRow(row, dma); drawStrip(row - 1); } SVGA3DUtil_AsyncCall((AsyncCallFn) SVGA3DUtil_DMAPoolFreeBuffer, dma); }
void bkgl::drawCurMode(Point p) { //TODO move this set pixle //setPixel(p); switch (pointMode) { case GL_POINTS: setPixel(p); break; case GL_LINES: if (savePoints(p,2)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; drawLine(p1, p2); clearSavedPoints(); } break; case GL_TRIANGLES: if (savePoints(p,3)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; Point p3 = savedPoints[2]; drawTriangle(p1, p2, p3); clearSavedPoints(); } break; case GL_LINE_STRIP: drawStrip(p); break; case GL_LINE_LOOP: drawStrip(p); break; case GL_TRIANGLE_STRIP: if (savePoints(p,3)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; Point p3 = savedPoints[2]; drawTriangle(p1, p2, p3); clearSavedPoints(); savePoints(p2,3); savePoints(p3,3); } break; case GL_POLYGON: case GL_TRIANGLE_FAN: if (savePoints(p,3)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; Point p3 = savedPoints[2]; drawTriangle(p1, p2, p3); clearSavedPoints(); savePoints(p1,3); savePoints(p3,3); } break; case GL_QUADS: if (savePoints(p,4)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; Point p3 = savedPoints[2]; Point p4 = savedPoints[3]; drawQuad(p1, p2, p3, p4); clearSavedPoints(); } break; case GL_QUAD_STRIP: if (savePoints(p,4)) { Point p1 = savedPoints[0]; Point p2 = savedPoints[1]; Point p3 = savedPoints[2]; Point p4 = savedPoints[3]; drawQuad(p1, p2, p4, p3); clearSavedPoints(); savePoints(p3,3); savePoints(p4,3); } break; default: //TODO begin must be called break; } return; }