Example usage for org.lwjgl.opengl EXTFramebufferObject glGenRenderbuffersEXT

List of usage examples for org.lwjgl.opengl EXTFramebufferObject glGenRenderbuffersEXT

Introduction

In this page you can find the example usage for org.lwjgl.opengl EXTFramebufferObject glGenRenderbuffersEXT.

Prototype

public static void glGenRenderbuffersEXT(@NativeType("GLuint *") int[] renderbuffers) 

Source Link

Document

Array version of: #glGenRenderbuffersEXT GenRenderbuffersEXT

Usage

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