List of usage examples for org.lwjgl.opengl EXTFramebufferObject glGenRenderbuffersEXT
public static void glGenRenderbuffersEXT(@NativeType("GLuint *") int[] renderbuffers)
From source file:com.ardor3d.framework.lwjgl.LwjglHeadlessCanvas.java
License:Open Source License
protected void init() { final int width = _settings.getWidth(); final int height = _settings.getHeight(); try {/*from w ww .j a va 2 s . c o m*/ // Create a Pbuffer so we can have a valid gl context to work with final PixelFormat format = new PixelFormat(_settings.getAlphaBits(), _settings.getDepthBits(), _settings.getStencilBits()); _buff = new Pbuffer(1, 1, format, null); _buff.makeCurrent(); } catch (final LWJGLException ex) { ex.printStackTrace(); } // Set up our Ardor3D context and capabilities objects final LwjglContextCapabilities caps = new LwjglContextCapabilities(GLContext.getCapabilities()); final RenderContext currentContext = new RenderContext(this, caps, null); if (!caps.isFBOSupported()) { throw new Ardor3dException("Headless requires FBO support."); } if (caps.isFBOMultisampleSupported() && caps.isFBOBlitSupported() && _settings.getSamples() > 0) { _useMSAA = true; } // Init our FBO. final IntBuffer buffer = BufferUtils.createIntBuffer(1); EXTFramebufferObject.glGenFramebuffersEXT(buffer); // generate id // Bind the FBO _fboID = buffer.get(0); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _fboID); // initialize our color renderbuffer EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _colorRBID = buffer.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _colorRBID); EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, GL11.GL_RGBA, width, height); // Attach color renderbuffer to framebuffer EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _colorRBID); // initialize our depth renderbuffer EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _depthRBID = buffer.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _depthRBID); EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, GL11.GL_DEPTH_COMPONENT, width, height); // Attach depth renderbuffer to framebuffer EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _depthRBID); // Check FBO complete LwjglTextureRenderer.checkFBOComplete(_fboID); // Now do it all again for multisample, if requested and supported if (_useMSAA) { // Init our ms FBO. EXTFramebufferObject.glGenFramebuffersEXT(buffer); // generate id // Bind the ms FBO _msfboID = buffer.get(0); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _msfboID); // initialize our ms color renderbuffer EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _mscolorRBID = buffer.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _settings.getSamples(), GL11.GL_RGBA, width, height); // Attach ms color renderbuffer to ms framebuffer EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID); // initialize our ms depth renderbuffer EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _msdepthRBID = buffer.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _settings.getSamples(), GL11.GL_DEPTH_COMPONENT, width, height); // Attach ms depth renderbuffer to ms framebuffer EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID); // Check MS FBO complete LwjglTextureRenderer.checkFBOComplete(_msfboID); // enable multisample GL11.glEnable(ARBMultisample.GL_MULTISAMPLE_ARB); } // Setup our data buffer for storing rendered image data. _data = ByteBuffer.allocateDirect(width * height * 4).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer(); // Add context to manager and set as active. ContextManager.addContext(this, currentContext); ContextManager.switchContext(this); // Setup a default bg color. _renderer.setBackgroundColor(ColorRGBA.BLACK); // Setup a default camera _camera = new Camera(width, _settings.getHeight()); _camera.setFrustumPerspective(45.0f, (float) width / (float) _settings.getHeight(), 1, 1000); _camera.setProjectionMode(ProjectionMode.Perspective); // setup camera orientation and position. final Vector3 loc = new Vector3(0.0f, 0.0f, 0.0f); final Vector3 left = new Vector3(-1.0f, 0.0f, 0.0f); final Vector3 up = new Vector3(0.0f, 1.0f, 0.0f); final Vector3 dir = new Vector3(0.0f, 0f, -1.0f); _camera.setFrame(loc, left, up, dir); // release our FBO(s) until used. EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, 0); }
From source file:com.ardor3d.renderer.lwjgl.LwjglTextureRenderer.java
License:Open Source License
@Override protected void activate() { // Lazy init/*from w w w.j a v a 2 s . c om*/ if (_fboID == 0) { final IntBuffer buffer = BufferUtils.createIntBuffer(1); // Create our texture binding FBO EXTFramebufferObject.glGenFramebuffersEXT(buffer); // generate id _fboID = buffer.get(0); // Create a depth renderbuffer to use for RTT use EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _depthRBID = buffer.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _depthRBID); int format = GL11.GL_DEPTH_COMPONENT; if (_supportsDepthTexture && _depthBits > 0) { switch (_depthBits) { case 16: format = ARBDepthTexture.GL_DEPTH_COMPONENT16_ARB; break; case 24: format = ARBDepthTexture.GL_DEPTH_COMPONENT24_ARB; break; case 32: format = ARBDepthTexture.GL_DEPTH_COMPONENT32_ARB; break; default: // stick with the "undefined" GL_DEPTH_COMPONENT } } EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, format, _width, _height); // unbind... EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, 0); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, 0); // If we support it, rustle up a multisample framebuffer + renderbuffers if (_samples != 0 && _supportsMultisample) { // create ms framebuffer object EXTFramebufferObject.glGenFramebuffersEXT(buffer); _msfboID = buffer.get(0); // create ms renderbuffers EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _mscolorRBID = buffer.get(0); EXTFramebufferObject.glGenRenderbuffersEXT(buffer); // generate id _msdepthRBID = buffer.get(0); // set up renderbuffer properties EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT( EXTFramebufferObject.GL_RENDERBUFFER_EXT, _samples, GL11.GL_RGBA, _width, _height); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID); EXTFramebufferMultisample.glRenderbufferStorageMultisampleEXT( EXTFramebufferObject.GL_RENDERBUFFER_EXT, _samples, format, _width, _height); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, 0); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _msfboID); EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _mscolorRBID); EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, _msdepthRBID); // check for errors checkFBOComplete(_msfboID); // release EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, 0); } } if (_active == 0) { final RenderContext context = ContextManager.getCurrentContext(); final RendererRecord record = context.getRendererRecord(); // needed as FBOs do not share this flag it seems record.setClippingTestValid(false); // push a delimiter onto the clip stack _neededClip = _parentRenderer.isClipTestEnabled(); if (_neededClip) { _parentRenderer.pushEmptyClip(); } GL11.glClearColor(_backgroundColor.getRed(), _backgroundColor.getGreen(), _backgroundColor.getBlue(), _backgroundColor.getAlpha()); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _fboID); ContextManager.getCurrentContext().pushEnforcedStates(); ContextManager.getCurrentContext().clearEnforcedStates(); ContextManager.getCurrentContext().enforceStates(_enforcedStates); } _active++; }
From source file:com.badlogic.gdx.backends.jglfw.JglfwGL20.java
License:Apache License
public void glGenRenderbuffers(int n, IntBuffer renderbuffers) { EXTFramebufferObject.glGenRenderbuffersEXT(renderbuffers); }
From source file:io.root.gfx.glutils.GL.java
License:Apache License
public static void glGenRenderbuffers(int n, IntBuffer renderbuffers) { EXTFramebufferObject.glGenRenderbuffersEXT(renderbuffers); }
From source file:org.oscim.gdx.LwjglGL20.java
License:Apache License
public void genRenderbuffers(int n, IntBuffer renderbuffers) { EXTFramebufferObject.glGenRenderbuffersEXT(renderbuffers); }
From source file:playn.java.JavaGL20.java
License:Apache License
@Override public void glGenRenderbuffers(int n, IntBuffer renderbuffers) { EXTFramebufferObject.glGenRenderbuffersEXT(renderbuffers); }
From source file:zildo.fwk.opengl.compatibility.FBOHardware.java
License:Open Source License
@Override public int generateDepthBuffer() { IntBuffer buf = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer(); EXTFramebufferObject.glGenRenderbuffersEXT(buf); // Create Texture In // OpenGL/*from w w w .j a v a2 s .c om*/ int depthID = buf.get(0); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, depthID); EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, GL11.GL_DEPTH_COMPONENT, Utils.adjustTexSize(Zildo.viewPortX), Utils.adjustTexSize(Zildo.viewPortY)); return depthID; }