Advertisement
stuart6854

Renderer.java

Jun 1st, 2016
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.43 KB | None | 0 0
  1. package org.bearengine.graphics.rendering;
  2.  
  3. import org.bearengine.core.Game;
  4. import org.bearengine.debug.Debug;
  5. import org.bearengine.graphics.types.Mesh;
  6. import org.bearengine.graphics.types.RenderModel;
  7. import org.bearengine.objects.Camera;
  8. import org.bearengine.objects.GameObject;
  9. import org.bearengine.objects.Object;
  10. import org.bearengine.utils.GLError;
  11. import org.joml.Matrix4d;
  12.  
  13. import java.util.HashMap;
  14. import java.util.Map;
  15.  
  16. import static org.lwjgl.opengl.GL11.GL_TRIANGLES;
  17. import static org.lwjgl.opengl.GL11.GL_UNSIGNED_INT;
  18. import static org.lwjgl.opengl.GL11.glDrawElements;
  19. import static org.lwjgl.opengl.GL15.GL_ELEMENT_ARRAY_BUFFER;
  20. import static org.lwjgl.opengl.GL15.glBindBuffer;
  21.  
  22. /**
  23.  * Created by Stuart on 31/05/2016.
  24.  */
  25. public class Renderer {
  26.  
  27.     private static Map<String, Mesh> RenderList = new HashMap<>();
  28.  
  29.     public static void Render(){
  30.         for(Mesh mesh : RenderList.values()){
  31.             mesh.material.GetTexture().Bind();
  32.             mesh.material.shaderProgram.Bind();
  33.  
  34.             mesh.material.shaderProgram.setUniforms("projection", Camera.Main_Camera.GetProjection());
  35.             mesh.material.shaderProgram.setUniforms("view", Camera.Main_Camera.GetViewMatrix());
  36.  
  37.             mesh.renderModel.PrepareRender();
  38.  
  39.             for(Object obj : mesh.renderModel.GetTransforms()) {
  40.                 Matrix4d transform = obj.GetTransformMatrix();
  41.                 mesh.material.shaderProgram.setUniforms("model", transform);
  42.  
  43.                 GLError.Check("Renderer -> Render() -> One");
  44.                 glDrawElements(GL_TRIANGLES, mesh.IndicesCount, GL_UNSIGNED_INT, 0);
  45.                 GLError.Check("Renderer -> Render() -> Two");
  46.             }
  47.         }
  48.     }
  49.  
  50.     public static void RegisterGameObject(GameObject obj){
  51.         if(RenderList.containsKey(obj.getMesh().Mesh_Name)){
  52.             RenderModel model = RenderList.get(obj.getMesh().Mesh_Name).renderModel;
  53.             model.AddTransform(obj);
  54.         }else{
  55.             obj.getMesh().renderModel.AddTransform(obj);
  56.             RenderList.put(obj.getMesh().Mesh_Name, obj.getMesh());
  57.         }
  58.     }
  59.  
  60.     public static void UnRegisterGameObject(GameObject obj){
  61.         if(obj.getMesh() == null) return;
  62.         if(RenderList.containsKey(obj.getMesh().Mesh_Name)){
  63.             RenderModel model = RenderList.get(obj.getMesh().Mesh_Name).renderModel;
  64.             model.RemoveTransform(obj);
  65.         }
  66.     }
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement