Каждый раз, когда я изменяю размер окна GLFW, оно не отображается, пока я изменяю размер окна. Вновь открытая часть окна прорисовывается только после того, как я закончу изменять размер окна. Вы можете увидеть это сами на картинке ниже:

Вот код моего приложения. Я использую Windows 10 в Visual Studio 2015
#include #include #include void Framebuffer_size_callback (окно GLFWwindow*, ширина int, высота int); voidprocessInput(GLFWwindow *window); void get_solve (int* window_width, int* window_height); недействительный initGlfwSettings(); GLFWwindow* initGlfwWindow(); недействительный initGlad(); // настройки const без знака int SCR_WIDTH = 800; const без знака int SCR_HEIGHT = 600; интервал основной() { initGlfwSettings(); Окно GLFWwindow* = initGlfwWindow(); инициалрад(); // рад: загружаем все указатели функций OpenGL // --------------------------------------- // цикл рендеринга // ----------- в то время как (!glfwWindowShouldClose(окно)) { int ширина, высота; glfwGetWindowSize(окно, &ширина, &высота); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear (GL_COLOR_BUFFER_BIT); glfwSetFramebufferSizeCallback (окно, Framebuffer_size_callback); // вход // ----- ProcessInput (окно); // glfw: замена буферов и опрос событий ввода-вывода (нажатие/отпускание клавиш, перемещение мыши и т. д.) // ---------------------------------------------------------------- ------------------------------- glfwSwapBuffers (окно); glfwPollEvents(); } // glfw: завершить работу, очистив все ранее выделенные ресурсы GLFW. // ---------------------------------------------------------------- ------------------ glfwTerminate(); вернуть 0; } // обрабатываем все входные данные: запрашиваем у GLFW, нажаты/отпущены ли соответствующие клавиши в этом кадре, и реагируем соответствующим образом // ---------------------------------------------------------------- -------------------------------------------------- ------- voidprocessInput(GLFWwindow *window) { if (glfwGetKey(окно, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose (окно, правда); } // glfw: всякий раз, когда размер окна изменяется (из-за изменения размера ОС или пользователя), выполняется эта функция обратного вызова // ---------------------------------------------------------------- --------------------------------------------- void Framebuffer_size_callback (окно GLFWwindow*, ширина int, высота int) { // убедитесь, что область просмотра соответствует размерам нового окна; обратите внимание, что ширина и // высота будет значительно больше, чем указано на дисплеях Retina. glViewport (0, 0, ширина, высота); } void get_solve(int* window_width, int* window_height) { const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); *window_width = режим->ширина; *window_height = режим->высота; } недействительный initGlfwSettings() { // glfw: инициализация и настройка // ------------------------------ глфвинит(); glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint (GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); #ifdef __ЯБЛОКО__ glfwWindowHint (GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // раскомментируйте этот оператор, чтобы исправить компиляцию в OS X #endif } GLFWwindow* initGlfwWindow() { /*GLFWmonitor* монитор = glfwGetPrimaryMonitor(); ширина интервала; высота интервала; get_solve(&ширина, &высота);*/ Окно GLFWwindow* = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "изучение opengl", NULL, NULL); если (окно == NULL) { std::cout
Мобильная версия