Пример #1
0
/*--------------------------
  set rendering target data
  C.Wang 0522, 2006
 ---------------------------*/
void FuCShadowModify::SetRenderTarget(int w, float *bgColor)
{
   FnScene scene;
   FnWorld gw;
   FnViewport vp;
   char shadowName[256];

   scene.Object(mHost);
   gw.Object(scene.GetWorld());
   gw.DeleteMaterial(mRenderTarget);
   gw.DeleteViewport(mViewport);

   // create the viewport with the associated size
   mViewport = gw.CreateViewport(0, 0, w, w);

   // create the render target material
   mRenderTarget = gw.CreateMaterial(NULL, NULL, NULL, 1.0f, NULL);

   // generate a unique shadow texture name
   sprintf(shadowName, "shadow%d", mRenderTarget);

   FnMaterial mat;
   mat.Object(mRenderTarget);
   mat.AddRenderTargetTexture(0, 0, shadowName, TEXTURE_32, mViewport);
   mat.SetTextureAddressMode(0, CLAMP_TEXTURE);

   // set render target
   vp.Object(mViewport);
   vp.SetRenderTarget(mRenderTarget, 0, 0, 0);
   vp.SetBackgroundColor(bgColor[0], bgColor[1], bgColor[2]);
}
Пример #2
0
/*------------------------------------
  destructor of classic shadow object
  C.Wang 0522, 2006
 -------------------------------------*/
FuCShadowModify::~FuCShadowModify()
{
   // delete the associated camera
   FnScene scene;
   FnWorld gw;
   scene.Object(mHost);
   gw.Object(scene.GetWorld());

   gw.DeleteViewport(mViewport);
   mViewport = FAILED_ID;

   gw.DeleteMaterial(mShadowMat);
   mShadowMat = FAILED_MATERIAL_ID;

   gw.DeleteMaterial(mRenderTarget);
   mRenderTarget = FAILED_MATERIAL_ID;

   scene.DeleteCamera( m_lightCam.Object() );
   m_lightCam.Object( FAILED_ID );

   scene.DeleteObject(mSeed);
   mSeed = FAILED_ID;

}