Work on post
This commit is contained in:
@@ -1,10 +1,9 @@
|
|||||||
package me.cortex.voxelmon.core.gl;
|
package me.cortex.voxelmon.core.gl;
|
||||||
|
|
||||||
import me.cortex.voxelmon.core.util.TrackedObject;
|
import me.cortex.voxelmon.core.util.TrackedObject;
|
||||||
|
import org.lwjgl.opengl.GL30C;
|
||||||
|
|
||||||
import static org.lwjgl.opengl.ARBFramebufferObject.*;
|
import static org.lwjgl.opengl.GL45C.*;
|
||||||
import static org.lwjgl.opengl.GL45C.glCreateFramebuffers;
|
|
||||||
import static org.lwjgl.opengl.GL45C.glNamedFramebufferTexture;
|
|
||||||
|
|
||||||
public class GlFramebuffer extends TrackedObject {
|
public class GlFramebuffer extends TrackedObject {
|
||||||
public final int id;
|
public final int id;
|
||||||
@@ -22,4 +21,8 @@ public class GlFramebuffer extends TrackedObject {
|
|||||||
super.free0();
|
super.free0();
|
||||||
glDeleteFramebuffers(this.id);
|
glDeleteFramebuffers(this.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void verify() {
|
||||||
|
glCheckNamedFramebufferStatus(this.id, GL_FRAMEBUFFER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ import static org.lwjgl.opengl.GL45C.glTextureStorage2D;
|
|||||||
public class GlTexture extends TrackedObject {
|
public class GlTexture extends TrackedObject {
|
||||||
final int id;
|
final int id;
|
||||||
private final int type;
|
private final int type;
|
||||||
|
public GlTexture() {
|
||||||
|
this(GL_TEXTURE_2D)
|
||||||
|
}
|
||||||
|
|
||||||
public GlTexture(int type) {
|
public GlTexture(int type) {
|
||||||
this.id = glCreateTextures(type);
|
this.id = glCreateTextures(type);
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
|||||||
@@ -3,14 +3,46 @@ package me.cortex.voxelmon.core.rendering;
|
|||||||
import me.cortex.voxelmon.core.gl.GlFramebuffer;
|
import me.cortex.voxelmon.core.gl.GlFramebuffer;
|
||||||
import me.cortex.voxelmon.core.gl.GlTexture;
|
import me.cortex.voxelmon.core.gl.GlTexture;
|
||||||
|
|
||||||
|
import static org.lwjgl.opengl.ARBFramebufferObject.*;
|
||||||
|
import static org.lwjgl.opengl.GL11.GL_RGBA8;
|
||||||
|
|
||||||
public class PostProcessing {
|
public class PostProcessing {
|
||||||
private final GlFramebuffer framebuffer;
|
private final GlFramebuffer framebuffer;
|
||||||
|
private int width;
|
||||||
|
private int height;
|
||||||
private GlTexture colour;
|
private GlTexture colour;
|
||||||
private GlTexture depth;
|
private GlTexture depthStencil;
|
||||||
|
|
||||||
public PostProcessing() {
|
public PostProcessing() {
|
||||||
this.framebuffer = new GlFramebuffer();
|
this.framebuffer = new GlFramebuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSize(int width, int height) {
|
||||||
|
if (this.width != width || this.height != height) {
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
if (this.colour != null) {
|
||||||
|
this.colour.free();
|
||||||
|
this.depthStencil.free();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.colour = new GlTexture().store(GL_RGBA8, 1, width, height);
|
||||||
|
this.depthStencil = new GlTexture().store(GL_DEPTH24_STENCIL8, 1, width, height);
|
||||||
|
|
||||||
|
this.framebuffer.bind(GL_COLOR_ATTACHMENT0, this.colour);
|
||||||
|
this.framebuffer.bind(GL_DEPTH_STENCIL_ATTACHMENT, this.depthStencil);
|
||||||
|
this.framebuffer.verify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Bind and clears the post processing frame buffer
|
||||||
|
public void bindClearFramebuffer() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Executes the post processing and emits to whatever framebuffer is currently bound via a blit
|
||||||
|
public void renderPost() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user