テキスト ファイルの変更を監視するプログラムがあり、変更を検出すると、ユーザーはこのテキスト ファイルの内容に基づいて画面を再表示することができます。私の問題は、新しい画面が要求されたときに、前の画面の内容が残り、新しい内容が重複することです。新しいデータが画面に表示される前に画面をクリアしたい。
ここに私が持っているものがあります:
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」を押してこれらの新しい命令をロードします。clear 関数を「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();
}
しかし、再表示を呼び出すと、古い画面と新しい画面の両方が表示されます。