我有一个程序监视文本文件的变化,当检测到一个时,用户可以选择基于这个文本文件的内容重新显示屏幕。我的问题是,当请求一个新的屏幕时,前一个屏幕的内容会保留,而新的内容与它重叠。我希望屏幕在屏幕上显示新数据之前清除。在GLUT,C++的按键清除屏幕
这里是我有:
void keyboard(unsigned char key, int x, int y){
if(key == 'c'){
c_pressed++;
cout<<"c pressed: "<<c_pressed<<"sound.txt cleared..."<<endl;
clear_file();
}
if(key=='v'){
v_pressed++;
cout<<"v pressed: "<<v_pressed<<"displaying new configuration..."<<endl;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutPostRedisplay();
}
}
当键“C”被按下时,文本文件被清除。我已经验证了这项工作正常。然后,在单独的程序将新数据加载到文本文件中后,用户按下'v'加载这些新指令。我试着将清除功能的“V”语句中,和以及在显示功能...
void display(void){
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
read_in_sound();
cout<<"Number of sound events: "<<numLines<<endl;
for(int j=0; j<numLines; j++){
if(data[0+j*4]==1){
circle(0,0,200,50);
}
if(data[1+j*4]==1){
circle(0,400,200,50);
}
if(data[2+j*4]==1){
circle(400,400,200,50);
}
if(data[3+j*4]==1){
circle(400,0,200,50);
}
}
glFlush();
glutSwapBuffers();
}
但是,当我打电话重新显示,同时显示新旧屏幕。