首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使LWJGL窗口可调整大小?

要使LWJGL窗口可调整大小,您需要在创建窗口时设置窗口的缩放模式。以下是一个简单的示例,展示了如何使用LWJGL 3.2.3版本创建一个可调整大小的窗口:

  1. 首先,确保您已经在项目中添加了LWJGL的依赖项。如果您使用的是Maven,可以在pom.xml文件中添加以下依赖项:
代码语言:xml<dependencies>
复制
   <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>
  1. 接下来,创建一个名为ResizableWindow的Java类,并添加以下代码:
代码语言: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方法设置了窗口的可调整大小属性。我们还添加了一个窗口大小更改回调,以便在窗口大小更改时更新视口。

现在,您可以运行此示例,并尝试调整窗口的大小。您会发现窗口可以根据您的需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券