#include <graphicsImmediateDeferred.h>


graphicsImmediateDeferred::graphicsImmediateDeferred()
  : gdynamic(true), graphicsDeferred(true), 
    graphicsImmediate(true), drawDeferredFirst(true)
{
}

void graphicsImmediateDeferred::draw()
{
  GOBJDEBUGCODE
  glPushAttrib(GL_CURRENT_BIT);
  glPushAttrib(GL_LIGHTING_BIT);

  if (drawDeferredFirst)
  {
    gdynamic.draw();
    graphicsImmediate.draw();
  }
  else
  {
    graphicsImmediate.draw();
    gdynamic.draw();
  }

  glPopAttrib();
  glPopAttrib();
}

void graphicsImmediateDeferred::update()
{
  gdynamic.nuke();
cout << "graphicsImmedateDeferred::update()" << endl;

  assert(gobjContainer::global!=0);
  // Save the current global graphics stream.
  gobjContainer & g(*gobjContainer::global);

  // Make this the new graphics stream.
  gdynamic.set();

  // Writes all the graphics to gobjContainer::global
  graphicsDeferred.draw();  

  // Restore global graphics stream.
  g.set();  
}




