Example #1
0
File: OS.c Project: tach4455/EE345M
// ******** Timer2A_Handler ************
// Updates sleep state and calls periodic function
// For lab 2 this is executing at 2kHz
void Timer2A_Handler(void) {

  Jitter1();
  TimerIntClear(TIMER2_BASE, TIMER_TIMA_TIMEOUT);
  gTimer1Count++;

  
  if(gThread1Valid == VALID) {
    gThread1p(); // Call periodic function
  }
}
Example #2
0
//=======================================
// Rasterize
//---------------------------------------
void MicroPolygon::Rasterize(FrameBuffer &framebuffer)
{
  int xmin=(int)p[0].x,ymin=(int)p[0].y;
  int xmax=(int)(p[0].x+1),ymax=(int)(p[0].y+1);
  int i,x,y;
  float ax,ay,bx,by,z;
  Colour colour;
  Opacity opacity;
  Point3 t;
  float jx,jy;

  // Calculate screen-space bounds of micropolygon
  for(i=1;i<4;i++)
  {
    if ((int)p[i].x<xmin) xmin=(int)p[i].x;
    if ((int)(p[i].x+1)>xmax) xmax=(int)(p[i].x+1);
    if ((int)p[i].y<ymin) ymin=(int)p[i].y;
    if ((int)(p[i].y+1)>ymax) ymax=(int)(p[i].y+1);
  }

  // Do sampling
  if (RiGlobal.options.jitter)
  {
    for(x=xmin;x<=xmax;x++)
    {
      for(y=ymin;y<=ymax;y++)
      {
        Jitter1(x,y,0,&jx,&jy);
        jx+=x;
        jy+=y;
        if (this->Sample(jx,jy,z,colour,opacity))
	{
          framebuffer.WritePixel(x,y,z,colour,opacity);
	}
      }
    }
  }
  else
  {
    for(x=xmin;x<=xmax;x++)
    {
      for(y=ymin;y<=ymax;y++)
      {
        if (this->Sample(x,y,z,colour,opacity))
	{
          framebuffer.WritePixel(x,y,z,colour,opacity);
	}
      }
    }
  }
}