diff --git a/.gitignore b/.gitignore index b066057..4e107a0 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,4 @@ /Assignments/lab15_CalebFontenot/nbproject/private/ /Assignments/lab15_CalebFontenot/build/ /Assignments/lab15_CalebFontenot/dist/ +/Assignments/Experiments/mavenproject1/target/ diff --git a/Assignments/Experiments/mavenproject1/pom.xml b/Assignments/Experiments/mavenproject1/pom.xml new file mode 100644 index 0000000..dbb407e --- /dev/null +++ b/Assignments/Experiments/mavenproject1/pom.xml @@ -0,0 +1,334 @@ + + + 4.0.0 + com.calebfontenot + mavenproject1 + 1.0-SNAPSHOT + jar + + UTF-8 + 17 + 17 + com.calebfontenot.mavenproject1.Mavenproject1 + 3.3.1 + natives-linux-arm64 + + + + + + org.lwjgl + lwjgl-bom + ${lwjgl.version} + import + pom + + + + + + + org.lwjgl + lwjgl + + + org.lwjgl + lwjgl-assimp + + + org.lwjgl + lwjgl-bgfx + + + org.lwjgl + lwjgl-cuda + + + org.lwjgl + lwjgl-egl + + + org.lwjgl + lwjgl-glfw + + + org.lwjgl + lwjgl-jawt + + + org.lwjgl + lwjgl-jemalloc + + + org.lwjgl + lwjgl-libdivide + + + org.lwjgl + lwjgl-llvm + + + org.lwjgl + lwjgl-lmdb + + + org.lwjgl + lwjgl-lz4 + + + org.lwjgl + lwjgl-meow + + + org.lwjgl + lwjgl-meshoptimizer + + + org.lwjgl + lwjgl-nanovg + + + org.lwjgl + lwjgl-nfd + + + org.lwjgl + lwjgl-nuklear + + + org.lwjgl + lwjgl-odbc + + + org.lwjgl + lwjgl-openal + + + org.lwjgl + lwjgl-opencl + + + org.lwjgl + lwjgl-opengl + + + org.lwjgl + lwjgl-opengles + + + org.lwjgl + lwjgl-openxr + + + org.lwjgl + lwjgl-opus + + + org.lwjgl + lwjgl-par + + + org.lwjgl + lwjgl-remotery + + + org.lwjgl + lwjgl-rpmalloc + + + org.lwjgl + lwjgl-shaderc + + + org.lwjgl + lwjgl-spvc + + + org.lwjgl + lwjgl-stb + + + org.lwjgl + lwjgl-tinyexr + + + org.lwjgl + lwjgl-tinyfd + + + org.lwjgl + lwjgl-vma + + + org.lwjgl + lwjgl-vulkan + + + org.lwjgl + lwjgl-xxhash + + + org.lwjgl + lwjgl-yoga + + + org.lwjgl + lwjgl-zstd + + + org.lwjgl + lwjgl + ${lwjgl.natives} + + + org.lwjgl + lwjgl-assimp + ${lwjgl.natives} + + + org.lwjgl + lwjgl-bgfx + ${lwjgl.natives} + + + org.lwjgl + lwjgl-glfw + ${lwjgl.natives} + + + org.lwjgl + lwjgl-jemalloc + ${lwjgl.natives} + + + org.lwjgl + lwjgl-libdivide + ${lwjgl.natives} + + + org.lwjgl + lwjgl-llvm + ${lwjgl.natives} + + + org.lwjgl + lwjgl-lmdb + ${lwjgl.natives} + + + org.lwjgl + lwjgl-lz4 + ${lwjgl.natives} + + + org.lwjgl + lwjgl-meow + ${lwjgl.natives} + + + org.lwjgl + lwjgl-meshoptimizer + ${lwjgl.natives} + + + org.lwjgl + lwjgl-nanovg + ${lwjgl.natives} + + + org.lwjgl + lwjgl-nfd + ${lwjgl.natives} + + + org.lwjgl + lwjgl-nuklear + ${lwjgl.natives} + + + org.lwjgl + lwjgl-openal + ${lwjgl.natives} + + + org.lwjgl + lwjgl-opengl + ${lwjgl.natives} + + + org.lwjgl + lwjgl-opengles + ${lwjgl.natives} + + + org.lwjgl + lwjgl-openxr + ${lwjgl.natives} + + + org.lwjgl + lwjgl-opus + ${lwjgl.natives} + + + org.lwjgl + lwjgl-par + ${lwjgl.natives} + + + org.lwjgl + lwjgl-remotery + ${lwjgl.natives} + + + org.lwjgl + lwjgl-rpmalloc + ${lwjgl.natives} + + + org.lwjgl + lwjgl-shaderc + ${lwjgl.natives} + + + org.lwjgl + lwjgl-spvc + ${lwjgl.natives} + + + org.lwjgl + lwjgl-stb + ${lwjgl.natives} + + + org.lwjgl + lwjgl-tinyexr + ${lwjgl.natives} + + + org.lwjgl + lwjgl-tinyfd + ${lwjgl.natives} + + + org.lwjgl + lwjgl-vma + ${lwjgl.natives} + + + org.lwjgl + lwjgl-xxhash + ${lwjgl.natives} + + + org.lwjgl + lwjgl-yoga + ${lwjgl.natives} + + + org.lwjgl + lwjgl-zstd + ${lwjgl.natives} + + + \ No newline at end of file diff --git a/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/LWJGL.java b/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/LWJGL.java new file mode 100644 index 0000000..a808fcf --- /dev/null +++ b/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/LWJGL.java @@ -0,0 +1,128 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.calebfontenot.mavenproject1; + +/** + * + * @author caleb + */ +import org.lwjgl.*; +import org.lwjgl.glfw.*; +import org.lwjgl.opengl.*; +import org.lwjgl.system.*; + +import java.nio.*; + +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 LWJGL { + + // The window handle + private long window; + + public void run() { + System.out.println("Hello LWJGL " + Version.getVersion() + "!"); + + init(); + loop(); + + // Free the window callbacks and destroy the window + glfwFreeCallbacks(window); + glfwDestroyWindow(window); + + // Terminate GLFW and free the error callback + glfwTerminate(); + 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 (!glfwInit()) { + throw new IllegalStateException("Unable to initialize GLFW"); + } + + // Configure GLFW + glfwDefaultWindowHints(); // optional, the current window hints are already the default + glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); // the window will stay hidden after creation + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); // the window will be resizable + + // Create the window + window = glfwCreateWindow(300, 300, "Hello World!", NULL, NULL); + if (window == NULL) { + 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. + glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> { + if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE) { + glfwSetWindowShouldClose(window, true); // We will detect this in the rendering loop + } + }); + + // Get the thread stack and push a new frame + try ( MemoryStack stack = stackPush()) { + IntBuffer pWidth = stack.mallocInt(1); // int* + IntBuffer pHeight = stack.mallocInt(1); // int* + + // Get the window size passed to glfwCreateWindow + glfwGetWindowSize(window, pWidth, pHeight); + + // Get the resolution of the primary monitor + GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + + // Center the window + 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 + glfwMakeContextCurrent(window); + // Enable v-sync + glfwSwapInterval(1); + + // Make the window visible + glfwShowWindow(window); + } + + private void loop() { + // This line is critical for LWJGL's interoperation with GLFW's + // OpenGL context, or any context that is managed externally. + // LWJGL detects the context that is current in the current thread, + // creates the GLCapabilities instance and makes the OpenGL + // bindings available for use. + GL.createCapabilities(); + + // Set the clear color + glClearColor(1.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 (!glfwWindowShouldClose(window)) { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear the framebuffer + + glfwSwapBuffers(window); // swap the color buffers + + // Poll for window events. The key callback above will only be + // invoked during this call. + glfwPollEvents(); + } + } + + public static void main(String[] args) { + new LWJGL().run(); + } + +} diff --git a/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/Mavenproject1.java b/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/Mavenproject1.java new file mode 100644 index 0000000..9d6bf2c --- /dev/null +++ b/Assignments/Experiments/mavenproject1/src/main/java/com/calebfontenot/mavenproject1/Mavenproject1.java @@ -0,0 +1,17 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Project/Maven2/JavaApp/src/main/java/${packagePath}/${mainClassName}.java to edit this template + */ + +package com.calebfontenot.mavenproject1; + +/** + * + * @author caleb + */ +public class Mavenproject1 { + + public static void main(String[] args) { + System.out.println("Hello World!"); + } +}