Example usage for org.lwjgl.opengl GL32 GL_TEXTURE_2D_MULTISAMPLE

List of usage examples for org.lwjgl.opengl GL32 GL_TEXTURE_2D_MULTISAMPLE

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL32 GL_TEXTURE_2D_MULTISAMPLE.

Prototype

int GL_TEXTURE_2D_MULTISAMPLE

To view the source code for org.lwjgl.opengl GL32 GL_TEXTURE_2D_MULTISAMPLE.

Click Source Link

Document

Accepted by the target parameter of BindTexture and TexImage2DMultisample.

Usage

From source file:com.samrj.devil.gl.Texture2DMultisample.java

Texture2DMultisample() {
    super(GL32.GL_TEXTURE_2D_MULTISAMPLE, GL32.GL_TEXTURE_BINDING_2D_MULTISAMPLE);
    width = -1;
    height = -1;
}

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);/*ww w . jav a 2 s  .co m*/
    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);
}

From source file:de.fatox.meta.graphics.buffer.MultisampleFBO.java

License:Apache License

/** Override this method in a derived class to set up the backing texture as you like. */
protected int createTexture(FrameBufferTextureAttachmentSpec attachmentSpec) {
    try {//from w  ww.  ja  va  2  s.  co  m
        int texture = Gdx.gl.glGenTexture();
        Gdx.gl.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, texture);

        GL32.glTexImage2DMultisample(GL32.GL_TEXTURE_2D_MULTISAMPLE, 2, attachmentSpec.internalFormat,
                getWidth(), getHeight(), true);
        Gdx.gl.glTexParameterf(texture, GL20.GL_TEXTURE_MIN_FILTER, Texture.TextureFilter.Nearest.getGLEnum());
        Gdx.gl.glTexParameterf(texture, GL20.GL_TEXTURE_MAG_FILTER, Texture.TextureFilter.Nearest.getGLEnum());
        Gdx.gl.glTexParameterf(texture, GL20.GL_TEXTURE_WRAP_S, Texture.TextureWrap.ClampToEdge.getGLEnum());
        Gdx.gl.glTexParameterf(texture, GL20.GL_TEXTURE_WRAP_T, Texture.TextureWrap.ClampToEdge.getGLEnum());
        Gdx.gl.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, 0);
        return texture;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return -1;
}

From source file:de.fatox.meta.graphics.buffer.MultisampleFBO.java

License:Apache License

protected void build() {
    GL20 gl = Gdx.gl20;/*from  w w w  . ja v  a 2  s .com*/

    checkValidBuilder();

    // 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);
    GLFrameBuffer.FrameBufferBuilder imBuilder = new GLFrameBuffer.FrameBufferBuilder(getWidth(), getHeight());

    int width = bufferBuilder.width;
    int height = bufferBuilder.height;

    if (bufferBuilder.hasDepthRenderBuffer) {
        depthbufferHandle = gl.glGenRenderbuffer();
        gl.glBindRenderbuffer(GL20.GL_RENDERBUFFER, depthbufferHandle);
        Gdx.gl30.glRenderbufferStorageMultisample(GL20.GL_RENDERBUFFER, 4,
                bufferBuilder.depthRenderBufferSpec.internalFormat, width, height);
    }

    if (bufferBuilder.hasStencilRenderBuffer) {
        stencilbufferHandle = gl.glGenRenderbuffer();
        gl.glBindRenderbuffer(GL20.GL_RENDERBUFFER, stencilbufferHandle);
        Gdx.gl30.glRenderbufferStorageMultisample(GL20.GL_RENDERBUFFER, 4,
                bufferBuilder.stencilRenderBufferSpec.internalFormat, width, height);
    }

    if (bufferBuilder.hasPackedStencilDepthRenderBuffer) {
        depthStencilPackedBufferHandle = gl.glGenRenderbuffer();
        gl.glBindRenderbuffer(GL20.GL_RENDERBUFFER, depthStencilPackedBufferHandle);
        Gdx.gl30.glRenderbufferStorageMultisample(GL20.GL_RENDERBUFFER, 4,
                bufferBuilder.packedStencilDepthRenderBufferSpec.internalFormat, width, height);
    }

    isMRT = bufferBuilder.textureAttachmentSpecs.size > 1;
    isMRT = true;
    int colorTextureCounter = 0;
    if (isMRT) {
        for (FrameBufferTextureAttachmentSpec attachmentSpec : bufferBuilder.textureAttachmentSpecs) {
            int texture = createTexture(attachmentSpec);
            textureAttachments++;
            if (attachmentSpec.isColorTexture()) {
                gl.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0 + colorTextureCounter,
                        GL32.GL_TEXTURE_2D_MULTISAMPLE, texture, 0);
                imBuilder.addColorTextureAttachment(GL30.GL_RGBA8, GL30.GL_RGBA, GL30.GL_UNSIGNED_BYTE);
                colorTextureCounter++;
            } else if (attachmentSpec.isDepth) {
                gl.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL20.GL_DEPTH_ATTACHMENT, GL30.GL_TEXTURE_2D,
                        texture, 0);
                imBuilder.addDepthTextureAttachment(GL30.GL_DEPTH_COMPONENT32F, GL30.GL_FLOAT);
            } else if (attachmentSpec.isStencil) {
                gl.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL20.GL_STENCIL_ATTACHMENT, gl.GL_TEXTURE_2D,
                        texture, 0);
            }
        }
    } else {
        int texture = createTexture(bufferBuilder.textureAttachmentSpecs.first());
        textureAttachments = 1;
        imBuilder.addColorTextureAttachment(GL30.GL_RGBA8, GL30.GL_RGBA, GL30.GL_UNSIGNED_BYTE);
        gl.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, texture);
        Gdx.gl30.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL20.GL_COLOR_ATTACHMENT0,
                GL32.GL_TEXTURE_2D_MULTISAMPLE, texture, 0);
    }

    if (isMRT) {
        IntBuffer buffer = BufferUtils.newIntBuffer(colorTextureCounter);
        for (int i = 0; i < colorTextureCounter; i++) {
            buffer.put(GL30.GL_COLOR_ATTACHMENT0 + i);
        }
        buffer.position(0);
        Gdx.gl30.glDrawBuffers(colorTextureCounter, buffer);
    }

    if (bufferBuilder.hasDepthRenderBuffer) {
        gl.glFramebufferRenderbuffer(GL20.GL_FRAMEBUFFER, GL20.GL_DEPTH_ATTACHMENT, GL20.GL_RENDERBUFFER,
                depthbufferHandle);
    }

    if (bufferBuilder.hasStencilRenderBuffer) {
        gl.glFramebufferRenderbuffer(GL20.GL_FRAMEBUFFER, GL20.GL_STENCIL_ATTACHMENT, GL20.GL_RENDERBUFFER,
                stencilbufferHandle);
    }

    if (bufferBuilder.hasPackedStencilDepthRenderBuffer) {
        gl.glFramebufferRenderbuffer(GL20.GL_FRAMEBUFFER, GL30.GL_DEPTH_STENCIL_ATTACHMENT,
                GL20.GL_RENDERBUFFER, depthStencilPackedBufferHandle);
    }

    gl.glBindRenderbuffer(GL20.GL_RENDERBUFFER, 0);
    gl.glBindTexture(GL32.GL_TEXTURE_2D_MULTISAMPLE, 0);

    assertShit();
    gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, defaultFramebufferHandle);

    addManagedFrameBuffer(Gdx.app, this);
    nonMultisampledFbo = imBuilder.build();
}