Started making use of LWJGL

This commit is contained in:
2018-12-04 13:06:31 +01:00
parent 9266daa791
commit 3f20e632b9
14 changed files with 237 additions and 0 deletions

4
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>

9
.idea/libraries/lwjgl.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl/lwjgl.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_glfw.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-glfw">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-glfw/lwjgl-glfw.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-glfw-natives-linux">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-glfw/lwjgl-glfw-natives-linux.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_jawt.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-jawt">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-jawt/lwjgl-jawt.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_jemalloc.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-jemalloc">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-jemalloc/lwjgl-jemalloc.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-jemalloc-natives-linux">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-jemalloc/lwjgl-jemalloc-natives-linux.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_natives_linux.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-natives-linux">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl/lwjgl-natives-linux.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_opengl.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-opengl">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-opengl/lwjgl-opengl.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-opengl-natives-linux">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-opengl/lwjgl-opengl-natives-linux.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

9
.idea/libraries/lwjgl_rpmalloc.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-rpmalloc">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-rpmalloc/lwjgl-rpmalloc.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="lwjgl-rpmalloc-natives-linux">
<CLASSES>
<root url="jar:///home/wulkanat/Downloads/lwjgl-3.2.0/lwjgl-rpmalloc/lwjgl-rpmalloc-natives-linux.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

11
Bsl.iml
View File

@@ -8,5 +8,16 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
<orderEntry type="library" name="lwjgl-opengl" level="project" />
<orderEntry type="library" name="lwjgl-opengl-natives-linux" level="project" />
<orderEntry type="library" name="lwjgl-glfw" level="project" />
<orderEntry type="library" name="lwjgl-glfw-natives-linux" level="project" />
<orderEntry type="library" name="lwjgl-jemalloc" level="project" />
<orderEntry type="library" name="lwjgl-jemalloc-natives-linux" level="project" />
<orderEntry type="library" name="lwjgl-jawt" level="project" />
<orderEntry type="library" name="lwjgl-rpmalloc" level="project" />
<orderEntry type="library" name="lwjgl-rpmalloc-natives-linux" level="project" />
<orderEntry type="library" name="lwjgl" level="project" />
<orderEntry type="library" name="lwjgl-natives-linux" level="project" />
</component>
</module>

123
src/LWJGL_Main.kt Normal file
View File

@@ -0,0 +1,123 @@
import org.lwjgl.*
import org.lwjgl.glfw.*
import org.lwjgl.opengl.*
import org.lwjgl.system.*
import java.nio.*
import com.sun.org.apache.xml.internal .utils.StringBufferPool.free
import java.time.Clock.system
import javax.swing.Spring.height
import javax.swing.Spring.width
import org.lwjgl.glfw.Callbacks.*
import org.lwjgl.glfw.GLFW.*
import org.lwjgl.opengl.GL11.*
import org.lwjgl.system.MemoryStack.*
import org.lwjgl.system.MemoryUtil.*
class LWJGL_Main {
// The window handle
private var window: Long = 0
fun 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 fun 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 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 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
stackPush().use({ stack ->
val pWidth = stack.mallocInt(1) // int*
val pHeight = stack.mallocInt(1) // int*
// Get the window size passed to glfwCreateWindow
glfwGetWindowSize(window, pWidth, pHeight)
// Get the resolution of the primary monitor
val 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 fun 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 or 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()
}
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
LWJGL_Main().run()
}
}
}