Сбой полноэкранного режима Glfw - PullRequest
0 голосов
/ 30 сентября 2019

У меня проблема с полноэкранным режимом. Это внутри моего цикла 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. Что удивляет меня еще больше: в то время как в первые секунды полноэкранного режима я все еще могу щелкнуть свою «полноэкранную кнопку» и вернуться к тому, что называется «Оконный полноэкранный режим»: enter image description here Он будет работать нормально без сбоев или ошибок.

Есть ли способ это исправить? Я уже пытался изменить версию с отладочной на выпускную, попытался добавить некоторые параметры из подсказок 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. Как вы думаете, это конкретная установка или у меня есть какие-то шансы исправить это? Означает ли это, что такое явление может произойти на любой случайной установке, и я даже не смогу обнаружить ошибку на ней?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...