Проблемы с отрисовкой в окне LWJGL 3.2

 
 
 
Сообщения:14
Мне нужно в программе окно изменяемых размеров (resizable, если по умному), но если, допустим окно я изначально сделал 500х500, а потом мышью увеличил до 700х700, отрисовка будет только в изначальной области - левый верхний угол размером 500х500. Остальное всегда черное. В чем проблема и как это решить?
Вот инициализация окна:
void init() {
        GLFWErrorCallback.createPrint(System.err).set();
        if ( !glfwInit() )
            throw new IllegalStateException("Не получается инициализировать GLFW");
        glfwDefaultWindowHints();
        glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
        glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
        window = glfwCreateWindow(300, 300, "Программа", NULL, NULL);
        if ( window == NULL )
            throw new RuntimeException("Не получилось создать окно");
        glfwSetKeyCallback(window, (window, key, scancode, action, mods) -> {
            if ( key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE )
                glfwSetWindowShouldClose(window, true);
        });
        glfwSetMouseButtonCallback(window, new GLFWMouseButtonCallback() {
            @Override
            public void invoke(long window, int button, int action, int mods) {
                Utils.msg(button, action, mods);
            }
        });
        try ( MemoryStack stack = stackPush() ) {
            IntBuffer pWidth = stack.mallocInt(1);
            IntBuffer pHeight = stack.mallocInt(1);
            glfwGetWindowSize(window, pWidth, pHeight);
            GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
            glfwSetWindowPos(
                    window,
                    (vidmode.width() - pWidth.get(0)) / 2,
                    (vidmode.height() - pHeight.get(0)) / 2
            );
        }
        glfwMakeContextCurrent(window);
        glfwSwapInterval(1);
        glfwShowWindow(window);
    }


Вот отрисовка:
void loop() {
        GL.createCapabilities();
        glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        while ( !glfwWindowShouldClose(window) ) {
            float width, height;
            try ( MemoryStack stack = stackPush() ) {
                IntBuffer pWidth = stack.mallocInt(1);
                IntBuffer pHeight = stack.mallocInt(1);
                glfwGetWindowSize(window, pWidth, pHeight);
                width = pWidth.get(0)/150f; height = pHeight.get(0)/150f;
            }
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

            glColor3f(1, 1, 1);
            String s = "Абв";
            font.drawString(s, -1f, -1f, width, height); // Это мой метод, просто рисуется текст


            glfwSwapBuffers(window);
            glfwPollEvents();
        }
    }
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет