Example usage for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0

List of usage examples for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0.

Prototype

int GL_COLOR_ATTACHMENT0

To view the source code for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0.

Click Source Link

Document

Accepted by the attachment parameter of FramebufferTexture{1D|2D|3D}, FramebufferRenderbuffer, and GetFramebufferAttachmentParameteriv.

Usage

From source file:com.adavr.player.globjects.Framebuffer.java

License:Open Source License

public void attachTexture2D(Texture texture) {
    GL30.glFramebufferTexture2D(target, GL30.GL_COLOR_ATTACHMENT0, texture.getTarget(), texture.id, 0);
}

From source file:com.badlogic.gdx.graphics.glutils.DeferredGBuffer.java

License:Apache License

private void build() {
    GL20 gl = Gdx.gl20;// w  ww  .j av a2s.c  om

    // iOS uses a different framebuffer handle! (not necessarily 0)
    if (!defaultFramebufferHandleInitialized) {
        defaultFramebufferHandleInitialized = true;
        if (Gdx.app.getType() == ApplicationType.iOS) {
            IntBuffer intbuf = ByteBuffer.allocateDirect(16 * Integer.SIZE / 8).order(ByteOrder.nativeOrder())
                    .asIntBuffer();
            gl.glGetIntegerv(GL20.GL_FRAMEBUFFER_BINDING, intbuf);
            defaultFramebufferHandle = intbuf.get(0);
        } else {
            defaultFramebufferHandle = 0;
        }
    }

    framebufferHandle = gl.glGenFramebuffer();

    gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, framebufferHandle);

    Gdx.gl.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, 0);

    colorTexture = gl.glGenTexture();

    gl.glBindTexture(GL20.GL_TEXTURE_2D, colorTexture);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MAG_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MIN_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_S, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_T, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_GENERATE_MIPMAP, Gdx.gl.GL_FALSE);
    gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL20.GL_RGB, width, height, 0, GL20.GL_RGB, GL20.GL_FLOAT, null);
    gl.glFramebufferTexture2D(GL30.GL_DRAW_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0, GL20.GL_TEXTURE_2D,
            colorTexture, 0);

    normalTexture = gl.glGenTexture();
    gl.glBindTexture(GL20.GL_TEXTURE_2D, normalTexture);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MAG_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MIN_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_S, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_T, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_GENERATE_MIPMAP, Gdx.gl.GL_FALSE);
    gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL20.GL_RGB, width, height, 0, GL20.GL_RGB, GL20.GL_FLOAT, null);
    gl.glFramebufferTexture2D(GL30.GL_DRAW_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0 + 1, GL20.GL_TEXTURE_2D,
            normalTexture, 0);

    attribsTexture = gl.glGenTexture();
    gl.glBindTexture(GL20.GL_TEXTURE_2D, attribsTexture);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MAG_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MIN_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_S, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_T, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_GENERATE_MIPMAP, Gdx.gl.GL_FALSE);
    gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL20.GL_RGB, width, height, 0, GL20.GL_RGB, GL20.GL_FLOAT, null);
    gl.glFramebufferTexture2D(GL30.GL_DRAW_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0 + 2, GL20.GL_TEXTURE_2D,
            attribsTexture, 0);

    depthTexture = gl.glGenTexture();
    gl.glBindTexture(GL20.GL_TEXTURE_2D, depthTexture);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MAG_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_MIN_FILTER, Gdx.gl.GL_NEAREST);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_S, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, Gdx.gl.GL_TEXTURE_WRAP_T, Gdx.gl.GL_CLAMP_TO_EDGE);
    Gdx.gl.glTexParameteri(GL20.GL_TEXTURE_2D, GL20.GL_GENERATE_MIPMAP, Gdx.gl.GL_FALSE);
    gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL30.GL_R32F, width, height, 0, GL11.GL_RED, GL20.GL_FLOAT, null);
    gl.glFramebufferTexture2D(GL30.GL_DRAW_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0 + 3, GL20.GL_TEXTURE_2D,
            depthTexture, 0);

    depthbufferHandle = postProcessor.composite.buffer2.depthbufferHandle;/*gl.glGenTexture();
                                                                          gl.glBindTexture(GL20.GL_TEXTURE_2D, depthbufferHandle);
                                                                          gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL30.GL_DEPTH_COMPONENT32F, width, height, 0, GL20.GL_DEPTH_COMPONENT, GL20.GL_FLOAT,
                                                                          null);*/

    /*   Gdx.gl.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, 0);
       depthbufferHandle = gl.glGenTexture();
       gl.glBindTexture(GL20.GL_TEXTURE_2D, depthbufferHandle);
        gl.glTexImage2D(GL20.GL_TEXTURE_2D, 0, GL30.GL_DEPTH32F_STENCIL8, width, height, 0, GL30.GL_DEPTH_STENCIL, GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
           null);*/

    gl.glFramebufferRenderbuffer(GL20.GL_FRAMEBUFFER, GL30.GL_DEPTH_STENCIL_ATTACHMENT, GL20.GL_RENDERBUFFER,
            depthbufferHandle);
    //gl.glRenderbufferStorage(GL20.GL_RENDERBUFFER, GL30.GL_DEPTH_COMPONENT32F, colorTexture.getWidth(), colorTexture.getHeight());

    drawBuffs = BufferUtils.newIntBuffer(4);
    drawBuffs.put(0, GL30.GL_COLOR_ATTACHMENT0);
    drawBuffs.put(1, GL30.GL_COLOR_ATTACHMENT1);
    drawBuffs.put(2, GL30.GL_COLOR_ATTACHMENT2);
    drawBuffs.put(3, GL30.GL_COLOR_ATTACHMENT3);

    org.lwjgl.opengl.GL20.glDrawBuffers(drawBuffs);

    int result = gl.glCheckFramebufferStatus(GL20.GL_FRAMEBUFFER);

    gl.glBindRenderbuffer(GL20.GL_RENDERBUFFER, 0);
    gl.glBindTexture(GL20.GL_TEXTURE_2D, 0);
    gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0);
    gl.glBindTexture(GL30.GL_TEXTURE_2D_ARRAY, 0);
    gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, defaultFramebufferHandle);

    if (result != GL20.GL_FRAMEBUFFER_COMPLETE) {
        //   colorTexture.dispose();

        gl.glDeleteFramebuffer(framebufferHandle);

        if (result == GL20.GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT)
            throw new IllegalStateException("frame buffer couldn't be constructed: incomplete attachment");
        if (result == GL20.GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS)
            throw new IllegalStateException("frame buffer couldn't be constructed: incomplete dimensions");
        if (result == GL20.GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT)
            throw new IllegalStateException("frame buffer couldn't be constructed: missing attachment");
        if (result == GL20.GL_FRAMEBUFFER_UNSUPPORTED)
            throw new IllegalStateException(
                    "frame buffer couldn't be constructed: unsupported combination of formats");
        throw new IllegalStateException("frame buffer couldn't be constructed: unknown error " + result);
    }
}

From source file:com.badlogic.gdx.graphics.glutils.DeferredGBuffer.java

License:Apache License

public void setReadBuffer(int i) {
    Gdx.gl30.glReadBuffer(GL30.GL_COLOR_ATTACHMENT0 + i);
}

From source file:com.grillecube.client.renderer.world.WorldRenderer.java

@Override
protected void onInitialized() {
    Logger.get().log(Logger.Level.DEBUG, "Initializing " + this.getClass().getSimpleName());

    GLH.glhCheckError("pre worldrenderer fbo creation");
    this.fbo = GLH.glhGenFBO();
    this.fbo.bind();
    this.fbo.createDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);

    this.fboTexture = GLH.glhGenTexture();
    this.fboTexture.bind(GL11.GL_TEXTURE_2D);
    this.fboTexture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    this.fboTexture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    this.fbo.createTextureAttachment(this.fboTexture, GL30.GL_COLOR_ATTACHMENT0);

    this.fboDepthBuffer = GLH.glhGenRBO();
    this.fboDepthBuffer.bind();
    this.fboDepthBuffer.attachToFBO(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT);

    this.fbo.unbind();

    this.resizeFbo();

    GLH.glhCheckError("post worldrenderer fbo creation");

    this.setPostProcessingProgram(null);
}

From source file:com.grillecube.engine.renderer.MainRenderer.java

/** the main fbo */
private void initializeMainFBO(int width, int height) {

    GLH.glhCheckError("pre mainrenderer fbo creation");

    this._fbo = GLH.glhGenFBO();
    this._fbo.bind();
    this._fbo.createDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);

    this._fbo_texture = GLH.glhGenTexture();
    this._fbo_texture.bind(GL11.GL_TEXTURE_2D);
    this._fbo_texture.image2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, width, height, 0, GL11.GL_RGB,
            GL11.GL_UNSIGNED_BYTE, (ByteBuffer) null);
    this._fbo_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    this._fbo_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    this._fbo.createTextureAttachment(this._fbo_texture, GL30.GL_COLOR_ATTACHMENT0);

    this._fbo_depth_buffer = this._fbo.createRenderBuffer(width, height, GL30.GL_DEPTH_ATTACHMENT);

    this._fbo.unbind();
    GLH.glhCheckError("post mainrenderer fbo creation");
}

From source file:com.grillecube.engine.renderer.world.WorldRenderer.java

private void createReflectionFBO() {

    this._reflection_fbo = GLH.glhGenFBO();
    this._reflection_fbo.bind();
    this._reflection_fbo.createDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);

    this._reflection_texture = GLH.glhGenTexture();
    this._reflection_texture.bind(GL11.GL_TEXTURE_2D);
    this._reflection_texture.bind(GL13.GL_TEXTURE0, GL11.GL_TEXTURE_2D);
    this._reflection_texture.image2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, REFLECTION_FBO_WIDTH,
            REFLECTION_FBO_HEIGHT, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, (ByteBuffer) null);
    this._reflection_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    this._reflection_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    this._reflection_fbo.createTextureAttachment(this._reflection_texture, GL30.GL_COLOR_ATTACHMENT0);

    this._reflection_depth_buffer = this._reflection_fbo.createRenderBuffer(REFLECTION_FBO_WIDTH,
            REFLECTION_FBO_HEIGHT, GL30.GL_DEPTH_ATTACHMENT);

    this._reflection_fbo.unbind();
}

From source file:com.grillecube.engine.renderer.world.WorldRenderer.java

private void createRefractionFBO() {

    this._refraction_fbo = GLH.glhGenFBO();
    this._refraction_fbo.bind();
    this._refraction_fbo.createDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);

    this._refraction_texture = GLH.glhGenTexture();
    this._refraction_texture.bind(GL11.GL_TEXTURE_2D);
    this._refraction_texture.bind(GL13.GL_TEXTURE0, GL11.GL_TEXTURE_2D);
    this._refraction_texture.image2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, REFRACTION_FBO_WIDTH,
            REFRACTION_FBO_HEIGHT, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, (ByteBuffer) null);
    this._refraction_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    this._refraction_texture.parameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    this._refraction_fbo.createTextureAttachment(this._refraction_texture, GL30.GL_COLOR_ATTACHMENT0);

    this._refraction_depth_buffer = this._reflection_fbo.createRenderBuffer(REFRACTION_FBO_WIDTH,
            REFRACTION_FBO_HEIGHT, GL30.GL_DEPTH_ATTACHMENT);

    this._refraction_fbo.unbind();
}

From source file:com.mtbs3d.minecrift.FBOParams.java

License:LGPL

public FBOParams(String fboName, int textureType, int internalFormat, int baseFormat, int bufferType,
        int fboWidth, int fboHeight) throws Exception {
    Minecraft mc = Minecraft.getMinecraft();
    _textureType = textureType;/*from   www.j av  a2 s.  co m*/

    if (fboSupport == FBO_SUPPORT.USE_EXT_UNKNOWN) {
        // The framebuffer, which regroups 0, 1, or more textures, and 0 or 1 depth buffer.
        try {
            _frameBufferId = GL30.glGenFramebuffers();
            fboSupport = FBO_SUPPORT.USE_GL30;
        } catch (IllegalStateException ex) {
            System.out.println(
                    "[Minecrift] FBO creation: GL30.glGenFramebuffers not supported. Attempting to use EXTFramebufferObject.glGenFramebuffersEXT");
            fboSupport = FBO_SUPPORT.USE_EXT;

            try {
                _frameBufferId = EXTFramebufferObject.glGenFramebuffersEXT();
            } catch (IllegalStateException ex1) {
                System.out.println(
                        "[Minecrift] FBO creation: EXTFramebufferObject.glGenFramebuffersEXT not supported, FBO creation failed.");
                throw ex1;
            }
        }
    } else if (fboSupport == FBO_SUPPORT.USE_GL30) {
        _frameBufferId = GL30.glGenFramebuffers();
    } else {
        _frameBufferId = EXTFramebufferObject.glGenFramebuffersEXT();
    }

    if (fboSupport == FBO_SUPPORT.USE_GL30) {
        _colorTextureId = GL11.glGenTextures();
        _depthRenderBufferId = GL30.glGenRenderbuffers();

        GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, _frameBufferId);
        checkGLError("FBO bind framebuffer");

        GL11.glBindTexture(textureType, _colorTextureId);
        checkGLError("FBO bind texture");

        GL11.glEnable(textureType);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        GL11.glTexImage2D(textureType, 0, internalFormat, fboWidth, fboHeight, 0, baseFormat, bufferType,
                (java.nio.ByteBuffer) null);

        System.out.println("[Minecrift] FBO '" + fboName + "': w: " + fboWidth + ", h: " + fboHeight);

        GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, textureType,
                _colorTextureId, 0);

        checkGLError("FBO bind texture framebuffer");

        GL30.glBindRenderbuffer(GL30.GL_RENDERBUFFER, _depthRenderBufferId); // bind the depth renderbuffer
        GL30.glRenderbufferStorage(GL30.GL_RENDERBUFFER, GL14.GL_DEPTH_COMPONENT24, fboWidth, fboHeight); // get the data space for it
        GL30.glFramebufferRenderbuffer(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL30.GL_RENDERBUFFER,
                _depthRenderBufferId);
        checkGLError("FBO bind depth framebuffer");
    } else {
        _colorTextureId = GL11.glGenTextures();
        _depthRenderBufferId = EXTFramebufferObject.glGenRenderbuffersEXT();

        EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _frameBufferId);
        checkGLError("FBO bind framebuffer");

        GL11.glBindTexture(textureType, _colorTextureId);
        checkGLError("FBO bind texture");

        GL11.glEnable(textureType);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        GL11.glTexImage2D(textureType, 0, internalFormat, fboWidth, fboHeight, 0, baseFormat, bufferType,
                (java.nio.ByteBuffer) null);
        System.out.println("[Minecrift] FBO '" + fboName + "': w: " + fboWidth + ", h: " + fboHeight);

        EXTFramebufferObject.glFramebufferTexture2DEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, textureType, _colorTextureId, 0);

        checkGLError("FBO bind texture framebuffer");

        EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _depthRenderBufferId); // bind the depth renderbuffer
        EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                GL14.GL_DEPTH_COMPONENT24, fboWidth, fboHeight); // get the data space for it
        EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _depthRenderBufferId);
        checkGLError("FBO bind depth framebuffer");
    }

    if (!checkFramebufferStatus()) {
        // OK, if we have an error here - then throw an exception
        System.out.println("[Minecrift] FAILED to create framebuffer!!");
        throw new Exception("Failed to create framebuffer");
    }
}

From source file:com.mtbs3d.minecrift.render.FBOParams.java

License:LGPL

public FBOParams(String fboName, int textureType, int internalFormat, int baseFormat, int bufferType,
        int fboWidth, int fboHeight) throws Exception {
    Minecraft mc = Minecraft.getMinecraft();
    _textureType = textureType;/*from   ww  w .j av a 2 s.c o m*/

    if (fboSupport == FBO_SUPPORT.USE_EXT_UNKNOWN) {
        // The framebuffer, which regroups 0, 1, or more textures, and 0 or 1 depth buffer.
        try {
            _frameBufferId = GL30.glGenFramebuffers();
            fboSupport = FBO_SUPPORT.USE_GL30;
        } catch (IllegalStateException ex) {
            System.out.println(
                    "[Minecrift] FBO creation: GL30.glGenFramebuffers not supported. Attempting to use EXTFramebufferObject.glGenFramebuffersEXT");
            fboSupport = FBO_SUPPORT.USE_EXT;

            try {
                _frameBufferId = EXTFramebufferObject.glGenFramebuffersEXT();
            } catch (IllegalStateException ex1) {
                System.out.println(
                        "[Minecrift] FBO creation: EXTFramebufferObject.glGenFramebuffersEXT not supported, FBO creation failed.");
                throw ex1;
            }
        }
    } else if (fboSupport == FBO_SUPPORT.USE_GL30) {
        _frameBufferId = GL30.glGenFramebuffers();
    } else {
        _frameBufferId = EXTFramebufferObject.glGenFramebuffersEXT();
    }

    if (fboSupport == FBO_SUPPORT.USE_GL30) {
        _colorTextureId = GL11.glGenTextures();
        _depthRenderBufferId = GL30.glGenRenderbuffers();

        GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, _frameBufferId);
        mc.checkGLError("FBO bind framebuffer");

        GL11.glBindTexture(textureType, _colorTextureId);
        mc.checkGLError("FBO bind texture");

        GL11.glEnable(textureType);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        GL11.glTexImage2D(textureType, 0, internalFormat, fboWidth, fboHeight, 0, baseFormat, bufferType,
                (java.nio.ByteBuffer) null);

        //System.out.println("[Minecrift] FBO '" + fboName + "': w: " + fboWidth + ", h: " + fboHeight);

        GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, textureType,
                _colorTextureId, 0);

        mc.checkGLError("FBO bind texture framebuffer");

        GL30.glBindRenderbuffer(GL30.GL_RENDERBUFFER, _depthRenderBufferId); // bind the depth renderbuffer
        GL30.glRenderbufferStorage(GL30.GL_RENDERBUFFER, GL14.GL_DEPTH_COMPONENT24, fboWidth, fboHeight); // get the data space for it
        GL30.glFramebufferRenderbuffer(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL30.GL_RENDERBUFFER,
                _depthRenderBufferId);
        mc.checkGLError("FBO bind depth framebuffer");
    } else {
        _colorTextureId = GL11.glGenTextures();
        _depthRenderBufferId = EXTFramebufferObject.glGenRenderbuffersEXT();

        EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, _frameBufferId);
        mc.checkGLError("FBO bind framebuffer");

        GL11.glBindTexture(textureType, _colorTextureId);
        mc.checkGLError("FBO bind texture");

        GL11.glEnable(textureType);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
        GL11.glTexParameterf(textureType, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
        GL11.glTexImage2D(textureType, 0, internalFormat, fboWidth, fboHeight, 0, baseFormat, bufferType,
                (java.nio.ByteBuffer) null);
        //System.out.println("[Minecrift] FBO '" + fboName + "': w: " + fboWidth + ", h: " + fboHeight);

        EXTFramebufferObject.glFramebufferTexture2DEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, textureType, _colorTextureId, 0);

        mc.checkGLError("FBO bind texture framebuffer");

        EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _depthRenderBufferId); // bind the depth renderbuffer
        EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                GL14.GL_DEPTH_COMPONENT24, fboWidth, fboHeight); // get the data space for it
        EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT,
                EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT,
                _depthRenderBufferId);
        mc.checkGLError("FBO bind depth framebuffer");
    }

    if (!checkFramebufferStatus()) {
        // OK, if we have an error here - then throw an exception
        System.out.println("[Minecrift] FAILED to create framebuffer!!");
        throw new Exception("Failed to create framebuffer");
    }
}

From source file:com.xrbpowered.gl.res.buffers.MultisampleBuffers.java

License:Open Source License

protected void create(int w, int h, int samples, boolean depthBuffer, boolean hdr) {
    colorMSTexId = GL11.glGenTextures();
    GL11.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, colorMSTexId);
    GL32.glTexImage2DMultisample(GL32.GL_TEXTURE_2D_MULTISAMPLE, samples, hdr ? GL30.GL_RGB16F : GL11.GL_RGB, w,
            h, false);/*from  ww  w . j  a  v  a 2  s .com*/
    GL11.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, 0);
    GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, colorMSTexId, 0);

    depthMSTexId = 0;
    if (depthBuffer) {
        depthMSTexId = GL11.glGenTextures();
        GL11.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, depthMSTexId);
        GL32.glTexImage2DMultisample(GL32.GL_TEXTURE_2D_MULTISAMPLE, samples, GL30.GL_DEPTH24_STENCIL8, w, h,
                false);
        GL11.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, 0);
        GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, depthMSTexId, 0);
    }
    checkStatus();
    GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);
}