Пример #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
/*-------------------------------
  create the material for shadow
  C.Wang 0522, 2006
 --------------------------------*/
void FuCShadowModify::CreateShadowMaterial(float *color)
{
   FnWorld gw;
   FnScene scene;
   scene.Object(mHost);
   gw.Object(scene.GetWorld());

   if (mShadowMat != FAILED_MATERIAL_ID) {
      gw.DeleteMaterial(mShadowMat);
   }

   // create the material
   float blackColor[3];

   blackColor[0] = blackColor[1] = blackColor[2] = 0.0f;
   mShadowMat = gw.CreateMaterial(blackColor, blackColor, blackColor, 1.0f, color);
}