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; } }