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