From b17c81769b5928ac1f11c63ed9de065890b7bf28 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Fri, 16 May 2025 12:14:44 +0200 Subject: [PATCH] optimize rendering --- .../java/chess/view/DDDrender/Renderer.java | 4 ++-- .../java/chess/view/DDDrender/Window.java | 20 +++++++------------ .../view/DDDrender/world/BoardEntity.java | 6 ++++++ .../chess/view/DDDrender/world/Entity.java | 4 ++++ .../view/DDDrender/world/ModelEntity.java | 17 +++++++++++++++- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/chess/view/DDDrender/Renderer.java b/app/src/main/java/chess/view/DDDrender/Renderer.java index 094a163..eb7a3eb 100644 --- a/app/src/main/java/chess/view/DDDrender/Renderer.java +++ b/app/src/main/java/chess/view/DDDrender/Renderer.java @@ -70,10 +70,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); } diff --git a/app/src/main/java/chess/view/DDDrender/Window.java b/app/src/main/java/chess/view/DDDrender/Window.java index 8804754..839042c 100644 --- a/app/src/main/java/chess/view/DDDrender/Window.java +++ b/app/src/main/java/chess/view/DDDrender/Window.java @@ -93,15 +93,6 @@ public class Window implements Closeable { ImGui.destroyContext(); } - private void setCallbacks() { - glfwSetMouseButtonCallback(this.window, (window, button, action, mods) -> { - if (button == GLFW_MOUSE_BUTTON_1 && action == GLFW_PRESS) { - if (this.lastCell.isValid()) - this.OnCellClick.emit(this.lastCell); - } - }); - } - private void initImGui() { ImGui.setCurrentContext(ImGui.createContext()); @@ -163,8 +154,6 @@ public class Window implements Closeable { GL.createCapabilities(); - setCallbacks(); - initImGui(); renderer.Init(); @@ -218,6 +207,11 @@ public class Window implements Closeable { this.OnCellEnter.emit(selectedCell); this.lastCell = selectedCell; } + + if (ImGui.getIO().getMouseClicked(0)) { + if (this.lastCell != null && this.lastCell.isValid()) + this.OnCellClick.emit(this.lastCell); + } } private void newFrame() { @@ -229,10 +223,10 @@ public class Window implements Closeable { } private void renderWindow() { - // ImGui.showDemoWindow(); + ImGui.showDemoWindow(); ImGui.begin("Hello"); - ImGui.button("test"); + ImGui.text("FPS : " + ImGui.getIO().getFramerate()); ImVec2 mousePos = ImGui.getIO().getMousePos(); ImVec2 framePos = ImGui.getCursorScreenPos(); checkCursor(mousePos.x - framePos.x, 800 - (mousePos.y - framePos.y), 800, 800); diff --git a/app/src/main/java/chess/view/DDDrender/world/BoardEntity.java b/app/src/main/java/chess/view/DDDrender/world/BoardEntity.java index a89d502..031f84e 100644 --- a/app/src/main/java/chess/view/DDDrender/world/BoardEntity.java +++ b/app/src/main/java/chess/view/DDDrender/world/BoardEntity.java @@ -2,6 +2,7 @@ package chess.view.DDDrender.world; import java.io.IOException; +import org.joml.Matrix4f; import org.joml.Vector3f; import chess.model.Coordinate; @@ -45,4 +46,9 @@ public class BoardEntity extends Entity { vao.close(); } + @Override + public Matrix4f getTransform() { + return null; + } + } diff --git a/app/src/main/java/chess/view/DDDrender/world/Entity.java b/app/src/main/java/chess/view/DDDrender/world/Entity.java index d686902..dcfcfab 100644 --- a/app/src/main/java/chess/view/DDDrender/world/Entity.java +++ b/app/src/main/java/chess/view/DDDrender/world/Entity.java @@ -2,10 +2,14 @@ package chess.view.DDDrender.world; import java.io.Closeable; +import org.joml.Matrix4f; + import chess.view.DDDrender.Renderer; public abstract class Entity implements Closeable{ public abstract void render(Renderer renderer); + public abstract Matrix4f getTransform(); + } diff --git a/app/src/main/java/chess/view/DDDrender/world/ModelEntity.java b/app/src/main/java/chess/view/DDDrender/world/ModelEntity.java index 56b7767..2a79cd2 100644 --- a/app/src/main/java/chess/view/DDDrender/world/ModelEntity.java +++ b/app/src/main/java/chess/view/DDDrender/world/ModelEntity.java @@ -2,6 +2,7 @@ package chess.view.DDDrender.world; import java.io.IOException; +import org.joml.Matrix4f; import org.joml.Vector3f; import chess.view.DDDrender.DDDModel; @@ -14,20 +15,24 @@ public class ModelEntity extends Entity { protected float rotation; protected DDDModel model; + private Matrix4f transform; + public ModelEntity(DDDModel model, Vector3f position, Vector3f color, float rotation) { this.position = position; this.color = color; this.rotation = rotation; this.model = model; + updateTransform(); } @Override public void render(Renderer renderer) { - renderer.Render(model, color, position, rotation); + renderer.Render(model, color, transform); } public void setPosition(Vector3f position) { this.position = position; + updateTransform(); } public void setColor(Vector3f color) { @@ -36,6 +41,7 @@ public class ModelEntity extends Entity { public void setRotation(float rotation) { this.rotation = rotation; + updateTransform(); } @Override @@ -43,4 +49,13 @@ public class ModelEntity extends Entity { this.model.close(); } + private void updateTransform() { + this.transform = new Matrix4f().translate(this.position).rotate(this.rotation, new Vector3f(0, 1, 0)); + } + + @Override + public Matrix4f getTransform() { + return transform; + } + }