要使LWJGL窗口可调整大小,您需要在创建窗口时设置窗口的缩放模式。以下是一个简单的示例,展示了如何使用LWJGL 3.2.3版本创建一个可调整大小的窗口:
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl</artifactId>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl-glfw</artifactId>
<version>3.2.3</version>
</dependency>
<dependency>
<groupId>org.lwjgl</groupId>
<artifactId>lwjgl-opengl</artifactId>
<version>3.2.3</version>
</dependency>
</dependencies>
ResizableWindow
的Java类,并添加以下代码: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.MemoryUtil.*;
public class ResizableWindow {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private long window;
public void run() {
System.out.println("Hello LWJGL " + Version.getVersion() + "!");
init();
loop();
glfwFreeCallbacks(window);
glfwDestroyWindow(window);
glfwTerminate();
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_FALSE);
glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
window = glfwCreateWindow(WIDTH, HEIGHT, "Resizable Window", 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);
}
});
glfwSetFramebufferSizeCallback(window, (window, width, height) -> {
glViewport(0, 0, width, height);
});
GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
glfwSetWindowPos(window, (vidmode.width() - WIDTH) / 2, (vidmode.height() - HEIGHT) / 2);
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glfwShowWindow(window);
}
private void loop() {
while (!glfwWindowShouldClose(window)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
}
public static void main(String[] args) {
new ResizableWindow().run();
}
}
在这个示例中,我们使用了LWJGL 3.2.3版本创建了一个可调整大小的窗口。我们设置了窗口的大小,并使用glfwWindowHint
方法设置了窗口的可调整大小属性。我们还添加了一个窗口大小更改回调,以便在窗口大小更改时更新视口。
现在,您可以运行此示例,并尝试调整窗口的大小。您会发现窗口可以根据您的需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云