Package graphics.model.terrain

Source Code of graphics.model.terrain.Terrain

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package graphics.model.terrain;

import static engine.Engine.ShaderHandler;
import graphics.mesh.Mesh;
import graphics.model.Model;
import java.util.ArrayList;
import static org.lwjgl.opengl.GL15.*;

/**
*
* @author simokr
*/
public class Terrain extends Model{
  private final int width, depth;
  public Terrain(int width, int depth){
    super();
    mesh = new Mesh();
    this.width = width;
    this.depth = depth;
    shader = ShaderHandler.get("./res/shaders/terrain.vert|./res/shaders/terrain.frag");
   
    create();
  }
 
  private void create(){
    Mesh meshBuilder = new Mesh();
    ArrayList<Float> buffer = new ArrayList<>();
   
    float halfWidth = this.width/2;
    float halfDepth = this.depth/2;   
   
    buffer.add(-halfWidth);
    buffer.add(0f);
    buffer.add(-halfDepth);
    buffer.add(-halfWidth);
    buffer.add(0f);
    buffer.add(halfDepth);
    buffer.add(halfWidth);
    buffer.add(0f);
    buffer.add(halfDepth);
    buffer.add(-halfWidth);
    buffer.add(0f);
    buffer.add(-halfDepth);
    buffer.add(halfWidth);
    buffer.add(0f);
    buffer.add(halfDepth);
    buffer.add(halfWidth);
    buffer.add(0f);
    buffer.add(-halfDepth);
   
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(halfDepth);
    buffer.add(halfWidth);
    buffer.add(halfDepth);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(halfWidth);
    buffer.add(halfDepth);
    buffer.add(halfWidth);
    buffer.add(0f);
   
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(1f);
    buffer.add(0f);
   
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(0f);
    buffer.add(0f);
   
    meshBuilder.create(buffer, 9, GL_STATIC_DRAW, false);
   
    /* Release old mesh (if set) */
    if(this.mesh.isReady())
      this.free();
   
    this.setMesh(meshBuilder);
    this.material.loadFromFile("res/mesh/terrain.mtl");
   
    System.out.println("Created terrain - "+(buffer.size()/9/3)+" triangles.");
    buffer.clear();
  }
 
  @Override
  public void free(){
    this.mesh.free();
  }
}
TOP

Related Classes of graphics.model.terrain.Terrain

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.