Пример #1
0
void GFXGLWindowTarget::makeActive()
{
   if(mBackBufferFBO)
   {
      glBindFramebuffer( GL_FRAMEBUFFER, mBackBufferFBO);
      GFXGL->getOpenglCache()->setCacheBinded(GL_FRAMEBUFFER, mBackBufferFBO);
   }
   else
   {
      glGenFramebuffers(1, &mBackBufferFBO);
      _setupAttachments();
      CHECK_FRAMEBUFFER_STATUS();
   }
}
Пример #2
0
bool PxCloth::_createClothPatch()
{
   // Make sure we have a mesh.
   if ( !mClothMesh )
   {
      _initClothMesh();
      if ( !mClothMesh )
         return false;
   }

   // Make sure we can change the world.
   mWorld->releaseWriteLock();

   _releaseCloth();

   NxClothDesc desc;
   desc.globalPose.setRowMajor44( getTransform() );
   desc.thickness = mThickness;
   desc.density = mDensity;
   desc.bendingStiffness = mBendingStiffness;   
   desc.dampingCoefficient = mDampingCoefficient;
   desc.friction = mFriction;
// start jc
   // todo: expose this
   desc.sleepLinearVelocity = 0.0000001f;
// end jc
   
   if ( mBendingEnabled )
      desc.flags |= NX_CLF_BENDING;   
   if ( mDampingEnabled )
      desc.flags |= NX_CLF_DAMPING;
   if ( mTriangleCollisionEnabled )
      desc.flags |= NX_CLF_TRIANGLE_COLLISION;
   if ( mSelfCollisionEnabled )
      desc.flags |= NX_CLF_SELFCOLLISION;

   desc.clothMesh = mClothMesh;    
   desc.meshData = mReceiveBuffers;

   if ( !desc.isValid() )
      return false;

   mCloth = mScene->createCloth( desc );
   mIsVBDirty = true;

   _updateStaticCloth();
   _setupAttachments();

   return true;
}
Пример #3
0
bool GFXGLWindowTarget::present()
{
    PRESERVE_FRAMEBUFFER();

   const Point2I srcSize = mBackBufferColorTex.getWidthHeight();
   const Point2I dstSize = getSize();

   glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
   glBindFramebuffer(GL_READ_FRAMEBUFFER, mBackBufferFBO);

   // OpenGL render upside down for make render more similar to DX.
   // Final screen are corrected here
   glBlitFramebuffer(
      0, 0, srcSize.x, srcSize.y,
      0, dstSize.y, dstSize.x, 0, // Y inverted
      GL_COLOR_BUFFER_BIT, GL_NEAREST);

   _WindowPresent();

   if(srcSize != dstSize || mBackBufferDepthTex.getWidthHeight() != dstSize)
      _setupAttachments();

   return true;
}