protected void setupDefaultTargets(final TextureStoreFormat outputformat) { _renderTargetMap.put("*Framebuffer", new RenderTarget_Framebuffer()); _inOutTargetA = new RenderTarget_Texture2D(_canvasSettings.getWidth(), _canvasSettings.getHeight(), outputformat); _inOutTargetB = new RenderTarget_Texture2D(_canvasSettings.getWidth(), _canvasSettings.getHeight(), outputformat); }
public DisplaySettings resizedCopy(final int width, final int height) { return new DisplaySettings(width, height, _colorDepth, _frequency, _alphaBits, _depthBits, _stencilBits, _samples, _fullScreen, _stereo, _shareContext); } }
if (_settings.isFullScreen()) { mode = getValidDisplayMode(_settings); if (null == mode) { throw new Ardor3dException("Bad display mode (w/h/bpp/freq): " + _settings.getWidth() + " / " + _settings.getHeight() + " / " + _settings.getColorDepth() + " / " + _settings.getFrequency()); mode = new DisplayMode(_settings.getWidth(), _settings.getHeight()); final PixelFormat format = new PixelFormat(_settings.getAlphaBits(), _settings.getDepthBits(), _settings.getStencilBits()).withSamples(_settings.getSamples()).withStereo(_settings.isStereo()); Display.setFullscreen(_settings.isFullScreen()); Display.create(format); } catch (final Exception e) {
public LwjglAwtCanvas(final DisplaySettings settings, final LwjglCanvasRenderer canvasRenderer) throws LWJGLException { super(new PixelFormat(settings.getColorDepth(), settings.getAlphaBits(), settings.getDepthBits(), settings .getStencilBits(), settings.getSamples()).withStereo(settings.isStereo())); _settings = settings; _canvasRenderer = canvasRenderer; _canvasRenderer.setCanvasCallback(new LwjglCanvasCallback() { @Override public void makeCurrent() throws LWJGLException { LwjglAwtCanvas.this.makeCurrent(); } @Override public void releaseContext() throws LWJGLException { LwjglAwtCanvas.this.releaseContext(); } }); }
public TextureRenderer createTextureRenderer(final DisplaySettings settings, final boolean forcePbuffer, final Renderer renderer, final ContextCapabilities caps) { if (!forcePbuffer && caps.isFBOSupported()) { return new JoglTextureRenderer(settings.getWidth(), settings.getHeight(), settings.getDepthBits(), settings .getSamples(), renderer, caps); } else if (caps.isPbufferSupported()) { return new JoglPbufferTextureRenderer(settings, renderer, caps); } else { logger.severe("No texture renderer support (FBO or Pbuffer)."); return null; } }
int match_freq = -1; for (int i = 0; i < modes.length; i++) { if (modes[i].getWidth() != settings.getWidth()) { logger.fine("DisplayMode " + modes[i] + ": Width != " + settings.getWidth()); continue; if (modes[i].getHeight() != settings.getHeight()) { logger.fine("DisplayMode " + modes[i] + ": Height != " + settings.getHeight()); continue; if (settings.getColorDepth() != 0 && modes[i].getBitsPerPixel() != settings.getColorDepth()) { logger.fine("DisplayMode " + modes[i] + ": Bits per pixel != " + settings.getColorDepth()); continue; } else { final int cur_freq = modes[i].getFrequency(); if (match_freq != settings.getFrequency() && // Previous is not a perfect match (cur_freq == settings.getFrequency() || // Current is perfect match
if (settings.getShareContext() != null) { sharedContext = ContextManager .getContextForKey(settings.getShareContext().getRenderContext().getContextKey()); if (settings.getSamples() != 0) { GL11C.glEnable(GL13C.GL_MULTISAMPLE); _camera = new Camera(settings.getWidth(), settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective); } else { _camera.setFrustumPerspective(_camera.getFovY(), (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera.getFrustumFar());
protected void init() { final int width = _settings.getWidth(); final int height = _settings.getHeight(); final PixelFormat format = new PixelFormat(_settings.getAlphaBits(), _settings.getDepthBits(), _settings.getStencilBits()); _buff = new Pbuffer(1, 1, format, null); _buff.makeCurrent(); if (caps.isFBOMultisampleSupported() && caps.isFBOBlitSupported() && _settings.getSamples() > 0) { _useMSAA = true; EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _settings.getSamples(), GL11.GL_RGBA, width, height); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _settings.getSamples(), GL11.GL_DEPTH_COMPONENT, width, height); _camera = new Camera(width, _settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) width / (float) _settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective);
GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, GLFW.GLFW_TRUE); GLFW.glfwSetErrorCallback(_errorCallback = GLFWErrorCallback.createPrint(System.err)); if (_settings.isFullScreen()) { _windowId = GLFW.glfwCreateWindow(_settings.getWidth(), _settings.getHeight(), "Ardor3D", primary, 0); } else { _windowId = GLFW.glfwCreateWindow(_settings.getWidth(), _settings.getHeight(), "Ardor3D", 0, 0);
height = DPIUtil.autoScaleUp(height); final DisplaySettings settings = _settings.resizedCopy(width, height); _canvasRenderer.init(settings, false); _rtt = _canvasRenderer.getRenderer().createTextureRenderer(width, height, _settings.getDepthBits(), _settings.getSamples());
/** * Applies all settings not related to OpenGL (screen resolution, screen size, etc...) * */ private void applySettings() { _newtWindow.setUndecorated(_settings.isFullScreen()); _newtWindow.setFullscreen(_settings.isFullScreen()); // FIXME Ardor3D does not allow to change the resolution /** * uses the filtering relying on resolution with the size to fetch only the screen mode matching with the * current resolution */ if (_settings.isFullScreen()) { final MonitorDevice monitor = _newtWindow.getMainMonitor(); List<MonitorMode> monitorModes = monitor.getSupportedModes(); // the resolution is provided by the user final Dimension dimension = new Dimension(_settings.getWidth(), _settings.getHeight()); monitorModes = MonitorModeUtil.filterByResolution(monitorModes, dimension); monitorModes = MonitorModeUtil.getHighestAvailableBpp(monitorModes); if (_settings.getFrequency() > 0) { monitorModes = MonitorModeUtil.filterByRate(monitorModes, _settings.getFrequency()); } else { monitorModes = MonitorModeUtil.getHighestAvailableRate(monitorModes); } monitor.setCurrentMode(monitorModes.get(0)); } }
if (settings.getShareContext() != null) { sharedContext = ContextManager.getContextForKey(settings.getShareContext().getRenderContext() .getContextKey()); if (settings.getSamples() != 0 && caps.isMultisampleSupported()) { GL11.glEnable(ARBMultisample.GL_MULTISAMPLE_ARB); _camera = new Camera(settings.getWidth(), settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective); (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera.getFrustumFar());
public void init() { if (_inited) { return; } // create the Display. final PixelFormat format = new PixelFormat(_settings.getAlphaBits(), _settings.getDepthBits(), _settings.getStencilBits()).withSamples(_settings.getSamples()).withStereo(_settings.isStereo()); try { Display.setParent(_canvas); // NOTE: Workaround for possible lwjgl "pixel not accelerated" bug, as suggested by user "faust" try { Display.create(format); } catch (final LWJGLException e) { // failed to create Display, apply workaround (sleep for 1 second) and try again Thread.sleep(1000); Display.create(format); } } catch (final Exception e) { logger.severe("Cannot create window"); logger.logp(Level.SEVERE, this.getClass().toString(), "initDisplay()", "Exception", e); throw new Ardor3dException("Cannot create window: " + e.getMessage()); } _canvasRenderer.init(_settings, true); // true - do swap in renderer. _inited = true; }
public TextureRenderer createTextureRenderer(final DisplaySettings settings, final boolean forcePbuffer, final Renderer renderer, final ContextCapabilities caps) { if (!forcePbuffer && caps.isFBOSupported()) { return new LwjglTextureRenderer(settings.getWidth(), settings.getHeight(), settings.getDepthBits(), settings.getSamples(), renderer, caps); } else if (caps.isPbufferSupported()) { return new LwjglPbufferTextureRenderer(settings, renderer, caps); } else { logger.severe("No texture renderer support (FBO or Pbuffer)."); return null; } } }
protected void setupDefaultTargets(final TextureStoreFormat outputformat) { _renderTargetMap.put(EffectManager.RT_FRAMEBUFFER, new RenderTarget_Framebuffer()); _inOutTargetA = new RenderTarget_Texture2D(_canvasSettings.getWidth(), _canvasSettings.getHeight(), outputformat); _inOutTargetB = new RenderTarget_Texture2D(_canvasSettings.getWidth(), _canvasSettings.getHeight(), outputformat); }
if (settings.getWidth() <= 0 || settings.getHeight() <= 0) { throw new Ardor3dException("Invalid resolution values: " + settings.getWidth() + " " + settings.getHeight()); if ((settings.getColorDepth() != 32) && (settings.getColorDepth() != 16) && (settings.getColorDepth() != 24) && (settings.getColorDepth() != -1)) { throw new Ardor3dException("Invalid pixel depth: " + settings.getColorDepth()); caps.setHardwareAccelerated(true); caps.setDoubleBuffered(true); caps.setAlphaBits(settings.getAlphaBits()); caps.setDepthBits(settings.getDepthBits()); caps.setNumSamples(settings.getSamples()); caps.setSampleBuffers(settings.getSamples() != 0); caps.setStereo(settings.isStereo()); caps.setStencilBits(settings.getStencilBits()); switch (settings.getColorDepth()) { case 32: case 24:
if (_settings.isFullScreen()) { setUndecorated(true); if (currentDisplayMode.getWidth() == _settings.getWidth() && currentDisplayMode.getHeight() == _settings.getHeight()) { if (currentDisplayMode.getBitDepth() == _settings.getColorDepth()) { if (currentDisplayMode.getRefreshRate() == _settings.getFrequency()) { matchingDisplayMode = currentDisplayMode; } else if (currentDisplayMode.getRefreshRate() == DisplayMode.REFRESH_RATE_UNKNOWN) { if (currentDisplayMode.getRefreshRate() == _settings.getFrequency()) { multiBitsDepthSupportedDisplayMode = currentDisplayMode; } else if (currentDisplayMode.getRefreshRate() == DisplayMode.REFRESH_RATE_UNKNOWN) { if (screenSize.width != _settings.getWidth() || screenSize.height != _settings.getHeight()) { _glCanvas.setSize(screenSize); x = (Toolkit.getDefaultToolkit().getScreenSize().width - _settings.getWidth()) / 2; y = (Toolkit.getDefaultToolkit().getScreenSize().height - _settings.getHeight()) / 2; this.setLocation(x, y);
if (settings.getShareContext() != null) { sharedContext = ContextManager.getContextForKey(settings.getShareContext().getRenderContext() .getContextKey()); if (settings.getSamples() != 0 && caps.isMultisampleSupported()) { final GL gl = GLContext.getCurrentGL(); gl.glEnable(GL.GL_MULTISAMPLE); _camera = new Camera(settings.getWidth(), settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) settings.getWidth() / (float) settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective); (float) settings.getWidth() / (float) settings.getHeight(), _camera.getFrustumNear(), _camera.getFrustumFar());
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;
public TextureRenderer createTextureRenderer(final int width, final int height, final int depthBits, final int samples, final Renderer renderer, final ContextCapabilities caps) { return createTextureRenderer(new DisplaySettings(width, height, depthBits, samples), false, renderer, caps); }