我正在尝试使用glfw开发一个程序,该程序在主循环中关闭窗口。但是,我得到了这个奇怪的运行时错误:
X Error of failed request: GLXBadDrawable
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 11 (X_GLXSwapBuffers)
Serial number of failed request: 158
Current serial number in output stream: 158
这是我正在尝试运行的代码
#include <GL/glfw3.h>
int main()
{
GLFWwindow* window;
if(!glfwInit())
return -1;
window = glfwCreateWindow(400, 400, "window", nullptr, nullptr);
if(!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while(!glfwWindowShouldClose(window))
{
glfwDestroyWindow(window);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
有什么方法可以从主循环内部破坏窗口吗?
是的,您可以glfwDestroyWindow
在主循环中调用。这是我的方法。
#include <GLFW/glfw3.h>
int main()
{
GLFWwindow* window;
if(!glfwInit())
return -1;
window = glfwCreateWindow(400, 400, "My Window", NULL, NULL);
if(!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while(!glfwWindowShouldClose(window))
{
if (glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS)
{
glfwDestroyWindow(window);
break;
}
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
按Q键破坏窗口。尝试运行此代码以查看其是否有效。我运行了这段代码,该过程仅返回0而不打印任何错误消息。我不明白为什么它不适合您。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句