Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package boilerplate.core;
- import static org.lwjgl.opengl.GL11.GL_BLEND;
- import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
- import static org.lwjgl.opengl.GL11.GL_CULL_FACE;
- import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
- import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
- import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
- import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
- import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
- import static org.lwjgl.opengl.GL11.glBlendFunc;
- import static org.lwjgl.opengl.GL11.glClear;
- import static org.lwjgl.opengl.GL11.glEnable;
- import static org.lwjgl.opengl.GL11.glViewport;
- import java.io.File;
- import net.jmatrix.Vector3;
- import org.lwjgl.LWJGLException;
- import org.lwjgl.LWJGLUtil;
- import org.lwjgl.Sys;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.input.Mouse;
- import org.lwjgl.opengl.Display;
- import org.lwjgl.opengl.DisplayMode;
- public class Main {
- static {
- System.setProperty("org.lwjgl.librarypath", new File(new File(System.getProperty("user.dir"), "native"),
- LWJGLUtil.getPlatformName()).getAbsolutePath());
- }
- public static final int WIDTH = 400, HEIGHT = 300;
- private VertexBuffer testBuffer;
- private float pitch, yaw;
- private float x, y, z;
- private int FPS;
- private long lastFPS, lastFrame;
- private int ticks;
- private void start() {
- try {
- Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
- Display.create();
- } catch (LWJGLException e) {
- e.printStackTrace();
- System.exit(0);
- }
- initGL();
- getDelta();
- lastFPS = getTime();
- //Mouse.setGrabbed(true);
- while (!Display.isCloseRequested()) {
- int delta = getDelta();
- update(delta);
- renderGL();
- Display.update();
- Display.sync(60);
- }
- Display.destroy();
- }
- private void update(int delta) {
- updateFPS();
- }
- private void initGL() {
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- testBuffer = new VertexBuffer(new Vertex[] {
- // 1st quad
- new Vertex(0.25f, -0.25f, 0, 0x6D91DA, 1, 0.5f), new Vertex(-0.25f, 0.25f, 0, 0x6D91DA, 0.5f, 1),
- new Vertex(0.25f, 0.25f, 0, 0x6D91DA, 1, 1), new Vertex(0.25f, -0.25f, 0, 0x6D91DA, 1, 0.5f),
- new Vertex(-0.25f, -0.25f, 0, 0x6D91DA, 0.5f, 0.5f), new Vertex(-0.25f, 0.25f, 0, 0x6D91DA, 0.5f, 1) });
- }
- private void renderGL() {
- glViewport(0, 0, WIDTH, HEIGHT);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- Renderer.instance.setPerspective();
- ticks++;
- yaw -= Mouse.getDX() / 100f;
- pitch += Mouse.getDY() / 100f;
- pitch = pitch > 1 ? 1 : pitch < -1 ? -1 : pitch;
- if (Keyboard.isKeyDown(Keyboard.KEY_W)) {
- x += Math.sin(yaw) / 20f;
- z += Math.cos(yaw) / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_S)) {
- x -= Math.sin(yaw) / 20f;
- z -= Math.cos(yaw) / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_A)) {
- x += Math.cos(-yaw) / 20f;
- z += Math.sin(-yaw) / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_D)) {
- x -= Math.cos(-yaw) / 20f;
- z -= Math.sin(-yaw) / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
- y += 1 / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_SPACE)) {
- y -= 1 / 20f;
- }
- if (Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
- if (Mouse.isGrabbed()) {
- Mouse.setGrabbed(false);
- }
- }
- System.out.println(((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024));
- Renderer.instance.setCamera(Vector3.fromValues(x, y, z), Vector3.fromValues(pitch, yaw, 0));
- cubeAt(0, 0, 0);
- cubeAt(0.5f, 0.5f, 1.5f);
- cubeAt(0.5f, 1.0f, 0);
- cubeAt(0, 0, 0.5f);
- cubeAt(0, 1.5f, 0);
- cubeAt(0.5f, 0, 0);
- cubeAt(3.5f, 0.5f, 1.5f);
- cubeAt(3.5f, 1.0f, 0);
- cubeAt(3, 0, 0.5f);
- cubeAt(3, 1.5f, 0);
- cubeAt(3.5f, 0, 0);
- }
- private void cubeAt(float x, float y, float z) {
- Vector3 t = Vector3.fromValues(x, y, z);
- Vector3 s = Vector3.fromValues(0, 0, -0.25f);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.rotate(Renderer.Y1, Math.PI * 0.5f);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.rotate(Renderer.Y1, Math.PI);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.rotate(Renderer.Y1, Math.PI * 1.5f);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.rotate(Renderer.X1, Math.PI * 0.5f);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- Renderer.instance.identity();
- Renderer.instance.translate(t);
- Renderer.instance.rotate(Renderer.X1, Math.PI * 1.5f);
- Renderer.instance.translate(s);
- Renderer.instance.drawBuffer(testBuffer);
- }
- private int getDelta() {
- long time = getTime();
- int delta = (int) (time - lastFrame);
- lastFrame = time;
- return delta;
- }
- private long getTime() {
- return (Sys.getTime() * 1000) / Sys.getTimerResolution();
- }
- private void updateFPS() {
- if (getTime() - lastFPS > 1000) {
- Display.setTitle("FPS: " + FPS);
- FPS = 0;
- lastFPS += 1000;
- }
- FPS++;
- }
- public static void main(String[] argv) {
- Main timerExample = new Main();
- timerExample.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment