public void setSmooth(int level) { pgl.reqNumSamples = level; GLCapabilities caps = new GLCapabilities(profile); caps.setAlphaBits(PGL.REQUESTED_ALPHA_BITS); caps.setDepthBits(PGL.REQUESTED_DEPTH_BITS); caps.setStencilBits(PGL.REQUESTED_STENCIL_BITS); caps.setSampleBuffers(true); caps.setNumSamples(pgl.reqNumSamples); caps.setBackgroundOpaque(true); caps.setOnscreen(true); NativeSurface target = window.getNativeSurface(); MutableGraphicsConfiguration config = (MutableGraphicsConfiguration) target.getGraphicsConfiguration(); config.setChosenCapabilities(caps); }
protected void initGL() { // System.out.println("*******************************"); if (profile == null) { if (PJOGL.profile == 2) { try { profile = GLProfile.getGL2ES2(); } catch (GLException ex) { profile = GLProfile.getMaxProgrammable(true); } } else if (PJOGL.profile == 3) { try { profile = GLProfile.getGL2GL3(); } catch (GLException ex) { profile = GLProfile.getMaxProgrammable(true); } if (!profile.isGL3()) { PGraphics.showWarning("Requested profile GL3 but is not available, got: " + profile); } } else if (PJOGL.profile == 4) { try { profile = GLProfile.getGL4ES3(); } catch (GLException ex) { profile = GLProfile.getMaxProgrammable(true); } if (!profile.isGL4()) { PGraphics.showWarning("Requested profile GL4 but is not available, got: " + profile); } } else throw new RuntimeException(PGL.UNSUPPORTED_GLPROF_ERROR); } // Setting up the desired capabilities; GLCapabilities caps = new GLCapabilities(profile); caps.setAlphaBits(PGL.REQUESTED_ALPHA_BITS); caps.setDepthBits(PGL.REQUESTED_DEPTH_BITS); caps.setStencilBits(PGL.REQUESTED_STENCIL_BITS); // caps.setPBuffer(false); // caps.setFBO(false); pgl.reqNumSamples = PGL.smoothToSamples(graphics.smooth); caps.setSampleBuffers(true); caps.setNumSamples(pgl.reqNumSamples); caps.setBackgroundOpaque(true); caps.setOnscreen(true); pgl.capabilities = caps; }
protected void initGLCanvas() { loadNatives(); device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); // FIXME use the settings to know whether to use the max programmable profile // then call GLProfile.getMaxProgrammable(true); GLCapabilities caps = new GLCapabilities(GLProfile.getMaxFixedFunc(true)); caps.setHardwareAccelerated(true); caps.setDoubleBuffered(true); caps.setStencilBits(settings.getStencilBits()); caps.setDepthBits(settings.getDepthBits()); if (settings.getSamples() > 1) { caps.setSampleBuffers(true); caps.setNumSamples(settings.getSamples()); } canvas = new GLCanvas(caps) { @Override public void addNotify() { super.addNotify(); onCanvasAdded(); } @Override public void removeNotify() { onCanvasRemoved(); super.removeNotify(); } }; canvas.invoke( false, new GLRunnable() { public boolean run(GLAutoDrawable glad) { canvas.getGL().setSwapInterval(settings.isVSync() ? 1 : 0); return true; } }); canvas.setFocusable(true); canvas.requestFocus(); canvas.setSize(settings.getWidth(), settings.getHeight()); canvas.setIgnoreRepaint(true); canvas.addGLEventListener(this); // FIXME not sure it is the best place to do that renderable.set(true); // TODO remove this block once for all when the unified renderer is stable /*if (settings.getBoolean("GraphicsDebug")) { canvas.invoke(false, new GLRunnable() { public boolean run(GLAutoDrawable glad) { GL gl = glad.getGL(); if (gl.isGLES()) { if (gl.isGLES1()) { glad.setGL(new DebugGLES1(gl.getGLES1())); } else { if (gl.isGLES2()) { glad.setGL(new DebugGLES2(gl.getGLES2())); } else { if (gl.isGLES3()) { glad.setGL(new DebugGLES3(gl.getGLES3())); } } } } else { if (gl.isGL4bc()) { glad.setGL(new DebugGL4bc(gl.getGL4bc())); } else { if (gl.isGL4()) { glad.setGL(new DebugGL4(gl.getGL4())); } else { if (gl.isGL3bc()) { glad.setGL(new DebugGL3bc(gl.getGL3bc())); } else { if (gl.isGL3()) { glad.setGL(new DebugGL3(gl.getGL3())); } else { if (gl.isGL2()) { glad.setGL(new DebugGL2(gl.getGL2())); } } } } } } return true; } }); } renderer = new JoglRenderer(); canvas.invoke(false, new GLRunnable() { public boolean run(GLAutoDrawable glad) { renderer.setMainFrameBufferSrgb(settings.getGammaCorrection()); return true; } });*/ }