List of usage examples for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0
int GL_COLOR_ATTACHMENT0
To view the source code for org.lwjgl.opengl GL30 GL_COLOR_ATTACHMENT0.
Click Source Link
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); }