Полноэкранный режим glfw вылетает

У меня проблема с полноэкранным режимом. Это внутри моего цикла while():

if (glGetError() !=GL_NO_ERROR)cout<<"GL_ERR 3711"<<endl;
if (fullscreen_t.pressed){
    if (fullscreen_t.active){
        vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
        if (glGetError() !=GL_NO_ERROR)cout<<"GL_ERR 3719"<<endl;
        glfwSetWindowMonitor(window, monitor, 0, 0, vidmode->width, vidmode->height, 0);
        if (glGetError() !=GL_NO_ERROR)cout<<"GL_ERR 3721"<<endl;
    }
    else{
        GLOBALS.scr_width = GLOBALS.vprt_width;
        GLOBALS.scr_height = GLOBALS.vprt_height;
        glfwSetWindowMonitor(window, nullptr, GLOBALS.scr_pos_X, GLOBALS.scr_pos_X, GLOBALS.vprt_width, GLOBALS.vprt_height, 0);
    }
}
if (glGetError() !=GL_NO_ERROR)cout<<"GL_ERR 3732"<<endl;

Прежде чем я инициализирую glfw, например:

if(!glfwInit())return -1;
GLFWwindow * window=glfwCreateWindow(GLOBALS.scr_width,GLOBALS.scr_height,"3d",nullptr,nullptr);
if (window == nullptr){
    glfwTerminate();
    cout<<"Couldnt initialize OpenGL."<<endl;
    return -1;
}
glfwMakeContextCurrent(window);
glewInit();
GLFWmonitor * monitor;
monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* vidmode;

Поэтому, когда я нажимаю кнопку полноэкранного режима, окно переходит в полноэкранный режим. После 3sek он перестает отвечать на мои входы, за исключением того, что он реагирует на события положения мыши. Позже вылетает. glGetError() не меняется с GL_NO_ERROR. Что меня удивляет еще больше: в первые секунды полноэкранного режима я все еще могу щелкнуть "кнопку полноэкранного режима" и вернуться к так называемому "оконному полноэкранному режиму": введите описание изображения здесьон будет продолжать нормально работать без сбоев или ошибок.

Есть способ исправить? Я уже пробовал менять версию с отладки на выпуск, пробовал добавлять параметры из подсказок glfw:

glfwWindowHint(GLFW_RED_BITS, vidmode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, vidmode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, vidmode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, vidmode->refreshRate);

Симптомы остаются прежними. Если я создаю окно в полноэкранном режиме с помощью glfwCreateWindow - то же самое. Я изменил размер окна просмотра на основе: Переключение между оконным и полноэкранным режимами в OpenGL/GLFW 3.2, и он работает без проблем. Моя установка - это планшет на i7. OpenGL вер. 4.5.0. Как вы думаете, это зависит от установки или у меня есть шансы исправить? Означает ли это, что такие явления могут происходить на любой случайной установке, и я даже не смогу уловить в ней ошибку?

0 ответов

Другие вопросы по тегам