У меня есть программа с OpenGL, работающая во вторичном потоке. Если цикл визуализации выполнен, я вызываю glfwDestroyWindow(). Тем не менее, окно не закрывается, прежде чем выйти из основного блока. Если я попытаюсь закрыть его несколько раз (неоднократно нажимая на x), появляется всплывающее окно, в котором говорится, что окно не отвечает и просит меня выйти из игры.glfwDestroyWindow не закрывает окно
Почему glfwDestroyWindow не правильно закрывает мое окно?
EDIT: Кстати, я использую GLFW3.
EDIT2:
Это как мой код выглядит следующим образом, в основном. Я вижу выход, пока окно все еще открыто. Окно закрывается только тогда, когда я либо закрываю его, либо выхожу из основного потока.
Главная нить:
int main() {
startOpenGLThread();
while(1);
}
OpenGL нить:
Window::start() {
initGLFW();
while(!glfwWindowShouldClose());
glfwDestroyWindow();
cout << "I can see this ouput, but the window is still open!" << endl;
}
EDIT3:
Окно закрывается, если я поставил glfwTerminate() сразу за выходом, очевидно. Однако этого я не хочу, потому что у меня могут открыться другие окна.
Я уже делаю это, как вы сказали. Однако glfwCreateWindow, цикл и glfwDestroyWindow находятся во вторичном потоке. – gartenriese
Быстрый вопрос: почему вы вызываете glfwMakeContextCurrent внутри цикла? Разве это не достаточно до петли? – gartenriese
Если вы работаете только с одним окном в своем приложении, да, достаточно вызвать 'glfwMakeContextCurrent' один раз после создания окна. – Jherico