1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| import org.lwjgl.*; import org.lwjgl.glfw.*; import org.lwjgl.opengl.*; import org.lwjgl.system.*;
import java.nio.*; import java.util.Objects;
import static org.lwjgl.glfw.Callbacks.*; import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.system.MemoryStack.*; import static org.lwjgl.system.MemoryUtil.*;
public class Main { private long window; public void run() { System.out.println("Hello LWJGL " + Version.getVersion() + "!");
init(); loop();
glfwFreeCallbacks(window); glfwDestroyWindow(window);
glfwTerminate(); Objects.requireNonNull(glfwSetErrorCallback(null)).free(); } private void init() { GLFWErrorCallback.createPrint(System.err).set();
if ( !glfwInit() ) throw new IllegalStateException("Unable to initialize GLFW");
glfwDefaultWindowHints(); glfwWindowHint(GLFW_VISIBLE, GLFW_TRUE); glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
window = glfwCreateWindow(800, 600, "Demo!", NULL, NULL); if ( window == NULL ) throw new RuntimeException("Failed to create the GLFW window");
glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> { if ( key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE ) glfwSetWindowShouldClose(window, true); });
try ( MemoryStack stack = stackPush() ) { IntBuffer pWidth = stack.mallocInt(1); IntBuffer pHeight = stack.mallocInt(1);
glfwGetWindowSize(window, pWidth, pHeight);
GLFWVidMode glfwVidMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
if (glfwVidMode != null) { glfwSetWindowPos( window, (glfwVidMode.width() - pWidth.get(0)) / 2, (glfwVidMode.height() - pHeight.get(0)) / 2 ); } }
glfwMakeContextCurrent(window); glfwSwapInterval(1);
glfwShowWindow(window); } private void loop() { GL.createCapabilities();
glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
while ( !glfwWindowShouldClose(window) ) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents(); } } public static void main(String[] args) { new Main().run(); } }
|