void draw() {
	background(204);

	if (currentMode == 1) {
		drawStrip();
	}
	else if (currentMode == 2) {
		drawFan();
	}
}
示例#2
0
文件: bkgl.cpp 项目: bkingery/cs455
/**
 * 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();
}
示例#3
0
文件: main.c 项目: Lewis-Liu-1/os_diy
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);
}
示例#4
0
文件: bkgl.cpp 项目: bkingery/cs455
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;
}