Co-authored-by: Persson-dev <sim16.prib@gmail.com>
Reviewed-on: #10
This commit was merged in pull request #10.
This commit is contained in:
l
2025-05-16 13:35:38 +00:00
parent 9ff433c257
commit 94870e65c2
9 changed files with 95 additions and 33 deletions

View File

@@ -1,9 +1,16 @@
package chess.view.DDDrender;
import static org.lwjgl.opengl.GL11.GL_DEPTH_COMPONENT;
import static org.lwjgl.opengl.GL11.GL_RGB;
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_BYTE;
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_INT;
import static org.lwjgl.opengl.GL11.glBindTexture;
import static org.lwjgl.opengl.GL11.glTexImage2D;
import java.io.Closeable;
import java.io.IOException;
import java.nio.IntBuffer;
import org.joml.Matrix4f;
import org.joml.Vector3f;
@@ -14,7 +21,7 @@ import chess.view.DDDrender.shader.BoardShader;
import chess.view.DDDrender.shader.PieceShader;
import chess.view.DDDrender.shader.ShaderProgram;
public class Renderer implements Closeable{
public class Renderer implements Closeable {
private BoardShader boardShader;
private PieceShader pieceShader;
@@ -26,6 +33,32 @@ public class Renderer implements Closeable{
public void Init() {
boardShader.LoadShader();
pieceShader.LoadShader();
// The frame buffer
int fbo = GL30.glGenFramebuffers();
GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, fbo);
// The texture
int renderTexture = GL30.glGenTextures();
glBindTexture(GL_TEXTURE_2D, renderTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 800, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
GL30.glTexParameteri(GL_TEXTURE_2D, GL30.GL_TEXTURE_MAG_FILTER, GL30.GL_NEAREST);
GL30.glTexParameteri(GL_TEXTURE_2D, GL30.GL_TEXTURE_MIN_FILTER, GL30.GL_NEAREST);
// The depth buffer
int depthBuffer = GL30.glGenRenderbuffers();
GL30.glBindRenderbuffer(GL30.GL_RENDERBUFFER, depthBuffer);
GL30.glRenderbufferStorage(GL30.GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 800, 800);
GL30.glFramebufferRenderbuffer(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL30.GL_RENDERBUFFER,
depthBuffer);
// Set "renderedTexture" as our colour attachement #0
GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, renderTexture, 0);
// Set the list of draw buffers.
int[] drawBuffers = { GL30.GL_COLOR_ATTACHMENT0 };
GL30.glDrawBuffers(drawBuffers);
}
public void Update(Camera cam) {
@@ -35,10 +68,10 @@ public class Renderer implements Closeable{
this.pieceShader.SetCamMatrix(cam);
}
public void Render(DDDModel model, Vector3f color, Vector3f position, float rotation) {
public void Render(DDDModel model, Vector3f color, Matrix4f transform) {
this.pieceShader.Start();
this.pieceShader.setModelColor(color);
this.pieceShader.setModelTransform(new Matrix4f().translate(position).rotate(rotation, new Vector3f(0, 1, 0)));
this.pieceShader.setModelTransform(transform);
Render(model);
}