我遇到一些基本glfw和opengl代码未按预期运行的问题。至少在几秒钟之后,窗户才会完全冻结,甚至更多次。
我已经注释了几乎所有代码,只剩下很少的几行。
init函数是:
int Renderer::init(std::string scene_file_ , RenderOptions options_)
{
if(!glfwInit()){
std::cout<<"Problem with GLFW"<< std::endl;
glfwTerminate();
return -1;
}
window = glfwCreateWindow(640,480, "raytracer", NULL, NULL);
if(!window){
std::cout << "Problem with window " << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glfwSwapInterval(2);
glewInit();
}
,绘制循环为:
void Renderer::displayScene()
{
GLCall(glEnable(GL_DEPTH_TEST));
int width, height;
glfwGetFramebufferSize(window, &width, &height);
GLCall(glViewport(0,0,width, height));
GLCall(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT));
GLCall(glClearColor(0.2,0.5,0.2,1.0));
printf("drawing %d\n", temp_inc_test++);
glfwPollEvents();
glfwSwapBuffers(renderer.window);
}
窗口开始正常,背景为正确的颜色,然后在约3秒至约5分钟之间,程序停止运行,窗口不再响应。 我很确定我已经运行了一些完全像这样的代码,并且运行了好几个小时。我不明白。
有什么明显的吗? 我忘了提及:我在Linux Jessie上的rasberry PI上