我有一個程序監視文本文件的變化,當檢測到一個時,用戶可以選擇基於這個文本文件的內容重新顯示屏幕。我的問題是,當請求一個新的屏幕時,前一個屏幕的內容會保留,而新的內容與它重疊。我希望屏幕在屏幕上顯示新數據之前清除。在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();
}
但是,當我打電話重新顯示,同時顯示新舊屏幕。