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