diff --git a/.classpath b/.classpath
index 53b0912..affc77a 100644
--- a/.classpath
+++ b/.classpath
@@ -1,21 +1,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/github/halotroop/litecraft/LiteCraftMain.java b/src/com/github/halotroop/litecraft/LiteCraftMain.java
index 9f16d4a..d791913 100644
--- a/src/com/github/halotroop/litecraft/LiteCraftMain.java
+++ b/src/com/github/halotroop/litecraft/LiteCraftMain.java
@@ -8,78 +8,23 @@ import java.nio.*;
public class LiteCraftMain
{
- private long window;
-
+ Window win;
public void run()
{
System.out.println("Hello LWJGL " + Version.getVersion() + "!");
- init();
+ win = new Window();
loop();
// Free the window callbacks and destroy the window
- Callbacks.glfwFreeCallbacks(window);
- GLFW.glfwDestroyWindow(window);
+ Callbacks.glfwFreeCallbacks(win.getWindow());
+ GLFW.glfwDestroyWindow(win.getWindow());
// Terminate GLFW and free the error callback
GLFW.glfwTerminate();
GLFW.glfwSetErrorCallback(null).free();
}
-
- private void init()
- {
- // Setup an error callback. The default implementation
- // will print the error message in System.err.
- GLFWErrorCallback.createPrint(System.err).set();
-
- // Initialize GLFW. Most GLFW functions will not work before doing this.
- if ( !GLFW.glfwInit() )
- throw new IllegalStateException("Unable to initialize GLFW");
-
- // Configure GLFW
- GLFW.glfwDefaultWindowHints(); // optional, the current window hints are already the default
- GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); // the window will stay hidden after creation
- GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, GLFW.GLFW_TRUE); // the window will be resizable
-
- // Create the window
- window = GLFW.glfwCreateWindow(300, 300, "Hello World!", 0, 0);
- if ( window == 0 )
- throw new RuntimeException("Failed to create the GLFW window");
-
- // Setup a key callback. It will be called every time a key is pressed, repeated or released.
- GLFW.glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> {
- if ( key == GLFW.GLFW_KEY_ESCAPE && action == GLFW.GLFW_RELEASE )
- GLFW.glfwSetWindowShouldClose(window, true); // We will detect this in the rendering loop
- });
-
- // Get the thread stack and push a new frame
- try ( MemoryStack stack = MemoryStack.stackPush() ) {
- IntBuffer pWidth = stack.mallocInt(1); // int*
- IntBuffer pHeight = stack.mallocInt(1); // int*
-
- // Get the window size passed to glfwCreateWindow
- GLFW.glfwGetWindowSize(window, pWidth, pHeight);
-
- // Get the resolution of the primary monitor
- GLFWVidMode vidmode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
-
- // Center the window
- GLFW.glfwSetWindowPos(
- window,
- (vidmode.width() - pWidth.get(0)) / 2,
- (vidmode.height() - pHeight.get(0)) / 2
- );
- } // the stack frame is popped automatically
-
- // Make the OpenGL context current
- GLFW.glfwMakeContextCurrent(window);
- // Enable v-sync
- GLFW.glfwSwapInterval(1);
-
- // Make the window visible
- GLFW.glfwShowWindow(window);
- }
-
+
private void loop()
{
// This line is critical for LWJGL's interoperation with GLFW's
@@ -90,14 +35,14 @@ public class LiteCraftMain
GL.createCapabilities();
// Set the clear color
- GL11.glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
+ GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// Run the rendering loop until the user has attempted to close
// the window or has pressed the ESCAPE key.
- while ( !GLFW.glfwWindowShouldClose(window) ) {
+ while ( !GLFW.glfwWindowShouldClose(win.getWindow()) ) {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // clear the framebuffer
- GLFW.glfwSwapBuffers(window); // swap the color buffers
+ GLFW.glfwSwapBuffers(win.getWindow()); // swap the color buffers
// Poll for window events. The key callback above will only be
// invoked during this call.
diff --git a/src/com/github/halotroop/litecraft/Window.java b/src/com/github/halotroop/litecraft/Window.java
new file mode 100644
index 0000000..3190462
--- /dev/null
+++ b/src/com/github/halotroop/litecraft/Window.java
@@ -0,0 +1,82 @@
+package com.github.halotroop.litecraft;
+
+import java.nio.IntBuffer;
+
+import org.lwjgl.Version;
+import org.lwjgl.glfw.Callbacks;
+import org.lwjgl.glfw.GLFW;
+import org.lwjgl.glfw.GLFWErrorCallback;
+import org.lwjgl.glfw.GLFWVidMode;
+import org.lwjgl.opengl.GL;
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.system.MemoryStack;
+
+public class Window {
+
+ private long window;
+
+ public long getWindow() {
+ return window;
+ }
+
+ public void setWindow(long window) {
+ this.window = window;
+ }
+
+ public Window()
+ {
+ // Setup an error callback. The default implementation
+ // will print the error message in System.err.
+ GLFWErrorCallback.createPrint(System.err).set();
+
+ // Initialize GLFW. Most GLFW functions will not work before doing this.
+ if ( !GLFW.glfwInit() )
+ throw new IllegalStateException("Unable to initialize GLFW");
+
+ // Configure GLFW
+ GLFW.glfwDefaultWindowHints(); // optional, the current window hints are already the default
+ GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE); // the window will stay hidden after creation
+ GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, GLFW.GLFW_TRUE); // the window will be resizable
+
+ // Create the window
+
+ window = GLFW.glfwCreateWindow(1600, 900, "Hello World!", 0, 0);
+ if ( window == 0 )
+ throw new RuntimeException("Failed to create the GLFW window");
+
+ // Setup a key callback. It will be called every time a key is pressed, repeated or released.
+ GLFW.glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> {
+ if ( key == GLFW.GLFW_KEY_ESCAPE && action == GLFW.GLFW_RELEASE )
+ GLFW.glfwSetWindowShouldClose(window, true); // We will detect this in the rendering loop
+ });
+
+ // Get the thread stack and push a new frame
+ try ( MemoryStack stack = MemoryStack.stackPush() ) {
+ IntBuffer pWidth = stack.mallocInt(1); // int*
+ IntBuffer pHeight = stack.mallocInt(1); // int*
+
+ // Get the window size passed to glfwCreateWindow
+ GLFW.glfwGetWindowSize(window, pWidth, pHeight);
+
+ // Get the resolution of the primary monitor
+ GLFWVidMode vidmode = GLFW.glfwGetVideoMode(GLFW.glfwGetPrimaryMonitor());
+
+ // Center the window
+ GLFW.glfwSetWindowPos(
+ window,
+ (vidmode.width() - pWidth.get(0)) / 2,
+ (vidmode.height() - pHeight.get(0)) / 2
+ );
+ } // the stack frame is popped automatically
+
+ // Make the OpenGL context current
+ GLFW.glfwMakeContextCurrent(window);
+ // Enable v-sync
+ GLFW.glfwSwapInterval(1);
+
+ // Make the window visible
+ GLFW.glfwShowWindow(window);
+ }
+
+
+ }