Hi. sorry, I am a total newbie here; I was wondering why my code below works totally fine in my Eclipse Java project that uses JavaSE-1.8 but totally doesn't work in the project that uses JavaSE-17. I am totally lost here. it just said that the package is not accessible, I have been trying to find the answer anywhere on the internet and asking chat-gpt or bard doesn't produce any answer. Oh, and I use LWJGL 3.2.2 (I don't think it works with both versions of Java) and some random LWJGL folder I got from my university which I don't know the version (only works with JavaSE-1.8) Thank you in advance.
package Test;
import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import org.lwjgl.*;
import org.lwjgl.Sys;
import org.lwjgl.glfw.*;
import org.lwjgl.opengl.*;
import org.lwjgl.system.*;
import static org.lwjgl.glfw.Callbacks.*;
import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL20.*;
import static org.lwjgl.opengl.GL30.*;
import static org.lwjgl.system.MemoryUtil.*;
import org.lwjgl.opengl.GLContext;
public class FirstOpenGLProgram
{
private static GLFWErrorCallback errorCallback;
private static long mWindowId;
private static float mClearColorRed = 0.1f;
private static float mClearColorGreen = 0.7f;
private static float mClearColorBlue = 1.0f;
private static float mClearColorAlpha = 0.0f;
private static String mWindowTitle = "First Program";
private static int mWindowWidth = 400;
private static int mWindowHeight = 300;
public FirstOpenGLProgram()
{
System.out.println( "LWJGL version: " + Sys.getVersion() );
}
public void init()
{
// register method for error messages
glfwSetErrorCallback(errorCallback = errorCallbackPrint(System.err));
// Initialize glfw
if (glfwInit() != GL_TRUE)
{
throw new IllegalStateException("Unable to initialize GLFW");
}
// Set up Window Hints
glfwDefaultWindowHints(); // Load the default Window Hints
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); // The window will not be resizable
glfwWindowHint(GLFW_VISIBLE, GL_FALSE); // Window will not be visible initially
// Get the size of the screen then calculate the centre.
ByteBuffer vidmode = glfwGetVideoMode( glfwGetPrimaryMonitor() );
int windowHorizOffset = (GLFWvidmode.width(vidmode) - mWindowWidth) / 2;
int windowVertOffset = (GLFWvidmode.height(vidmode) - mWindowHeight) / 2;
// code to set full screen
//mWindowWidth = GLFWvidmode.width(vidmode);
//mWindowHeight = GLFWvidmode.height(vidmode);
//mWindowId = glfwCreateWindow(GLFWvidmode.width(vidmode), GLFWvidmode.height(vidmode), "LWJGL3 - Coloured Triangle", glfwGetPrimaryMonitor(), NULL);
// code for windowed window
mWindowId = glfwCreateWindow(mWindowWidth, mWindowHeight, mWindowTitle, NULL, NULL);
// set the windows position on the screen
glfwSetWindowPos(mWindowId, windowHorizOffset, windowVertOffset);
// Make the window visible
glfwShowWindow(mWindowId);
glfwMakeContextCurrent(mWindowId); // Make the glfw context current
GLContext.createFromCurrent(); // Generate an OpenGL context from the current glfw context
// set the Clear colour
glClearColor(mClearColorRed, mClearColorGreen, mClearColorBlue, mClearColorAlpha);
}
public void mainLoop()
{
// Run the rendering loop until the user has attempted to close
// the window or has pressed the ESCAPE key.
while ( glfwWindowShouldClose(mWindowId) == GL_FALSE ){
// Clear the frame buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Swap the color buffers
glfwSwapBuffers(mWindowId);
// Poll for window events.
glfwPollEvents();
}
}
public void cleanUp()
{
// Destory the window created
glfwDestroyWindow(mWindowId);
// Release the error Call back
errorCallback.release();
// terminate the glfw context
glfwTerminate();
}
public static void main(String[] args)
{
// Create instance of our Lab
FirstOpenGLProgram lab = new FirstOpenGLProgram();
try
{
// Initialise the lab
lab.init();
// Run the main loop
lab.mainLoop();
// Clean up after our lab
lab.cleanUp();
}
finally
{
// in case there was an exception terminate the GLFW context and release the call back function
glfwTerminate();
errorCallback.release();
}
}
}