public void setMultipleTargets(final boolean force) {
   if (force) {
     logger.fine("Copy Texture Pbuffer used!");
     _useDirectRender = false;
     _texture = null;
     if (_pbuffer != null) {
       try {
         giveBackContext();
       } catch (final LWJGLException ex) {
       }
       ContextManager.removeContext(_pbuffer);
     }
   } else {
     if ((Pbuffer.getCapabilities() & Pbuffer.RENDER_TEXTURE_SUPPORTED) != 0) {
       logger.fine("Render to Texture Pbuffer supported!");
       if (_texture == null) {
         logger.fine("No RenderTexture used in init, falling back to Copy Texture PBuffer.");
         _useDirectRender = false;
       } else {
         _useDirectRender = true;
       }
     } else {
       logger.fine("Copy Texture Pbuffer supported!");
       _texture = null;
     }
   }
 }
  private void initPbuffer() {

    try {
      if (_pbuffer != null) {
        giveBackContext();
        ContextManager.removeContext(_pbuffer);
      }
      final PixelFormat format =
          new PixelFormat(
                  _settings.getAlphaBits(), _settings.getDepthBits(), _settings.getStencilBits())
              .withSamples(_settings.getSamples())
              .withBitsPerPixel(_settings.getColorDepth())
              .withStereo(_settings.isStereo());
      _pbuffer = new Pbuffer(_width, _height, format, _texture, null);
      final Object contextKey = _pbuffer;
      try {
        _pbuffer.makeCurrent();
      } catch (final LWJGLException e) {
        throw new RuntimeException(e);
      }

      final LwjglContextCapabilities caps =
          new LwjglContextCapabilities(GLContext.getCapabilities());
      ContextManager.addContext(
          contextKey, new RenderContext(contextKey, caps, ContextManager.getCurrentContext()));

    } catch (final Exception e) {
      logger.logp(Level.SEVERE, this.getClass().toString(), "initPbuffer()", "Exception", e);

      if (_texture != null && _useDirectRender) {
        logger.warning(
            "Your card claims to support Render to Texture but fails to enact it.  Updating your driver might solve this problem.");
        logger.warning("Attempting to fall back to Copy Texture.");
        _texture = null;
        _useDirectRender = false;
        initPbuffer();
        return;
      }

      logger.log(Level.WARNING, "Failed to create Pbuffer.", e);
      return;
    }

    try {
      activate();

      _width = _pbuffer.getWidth();
      _height = _pbuffer.getHeight();

      deactivate();
    } catch (final Exception e) {
      logger.log(Level.WARNING, "Failed to initialize created Pbuffer.", e);
      return;
    }
  }
 public void cleanup() {
   ContextManager.removeContext(_pbuffer);
   _pbuffer.destroy();
 }