#include <gl/glut.h>        
#include <stdlib.h>

GLsizei wh = 500, ww = 500;        /* 초기 윈도우 크기 */
GLfloat size = 3.0;        /* 사각형 변 길이의 절반 */
GLint rx, ry;
int t=0;

void myinit(void)        
{
        glClearColor(0.0, 0.0, 0.0, 1.0);
        glViewport(0, 0, ww, wh);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0.0,(GLdouble)ww,0.0,(GLdouble)wh);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}
void drawSquare(int x, int y)        
{
        y=wh-y;
        if(t==0)
                glColor3ub( (char)rand()%256, (char)rand()%256, (char)rand()%256); //stdlib.h
        else
                glColor3ub(0,0,0);
        glBegin(GL_POLYGON);
         glVertex2f(x+size, y+size);
         glVertex2f(x-size, y+size);
         glVertex2f(x-size, y-size);
         glVertex2f(x+size, y-size);
        glEnd();
        glFlush();
}

void myReshape(GLsizei w, GLsizei h)
{
        /* 절단 상자 조절 */
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        /* 시역의 조절 */
        glViewport(0,0,w,h);
        ww=w;wh=h;
}

void mouse(int btn, int state, int x, int y)
{
        //작성하시오
        if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
                drawSquare( x, y);
        if(btn==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN)
        {
                rx = x;
                ry = wh - y;
        }
}
void Motion( int x, int y)
{
        drawSquare(x, y);
}

void display()
{
        glClear(GL_COLOR_BUFFER_BIT);
        glFlush();//clear 명령을 즉각 실행
}

void MyMainMenu(int id)
{
        if(id == 1) exit(0);
    else if (id == 2) t=0;
}
void MySubMenu1(int id)
{                                    
   if (id == 1) t=1;
   else if(id == 2) glutPostRedisplay();
}
void MySubMenu2(int id)
{                                    
   if (id == 1) size=size*2;
   else if(size>1) size=size/2;
}        

void key(unsigned char k, int xx, int yy){
        glColor3f(1.0,1.0,1.0);
        glRasterPos2i(rx,ry);
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15,k);
        rx +=glutBitmapWidth(GLUT_BITMAP_9_BY_15,k);
        //바로 출력
        glFlush();
}

int main(int argc, char** argv)
{
           glutInit(&argc,argv);
        glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
        glutInitWindowSize(500,500);
        glutCreateWindow("square");
        myinit ();
     //   작성하시오
        GLint MySubMenuID1 = glutCreateMenu(MySubMenu1);
    glutAddMenuEntry("Pixel", 1);
    glutAddMenuEntry("All", 2);

        GLint MySubMenuID2 = glutCreateMenu(MySubMenu2);
    glutAddMenuEntry("Increase Square Size", 1);
    glutAddMenuEntry("Decrease Square Size", 2);

    GLint MyMainMenuID = glutCreateMenu(MyMainMenu);
    glutAddMenuEntry("Quit", 1);
    glutAddMenuEntry("Draw", 2);
    glutAddSubMenu("Erase", MySubMenuID1);
    glutAddSubMenu("Resize", MySubMenuID2);
    glutAttachMenu(GLUT_RIGHT_BUTTON);
        
        glutKeyboardFunc(key);
        glutMouseFunc(mouse);
        glutMotionFunc(Motion);
        glutReshapeFunc(myReshape);
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
}

코드는 이거이고요

질문 : 마우스 오른쪽 버튼 누르면 메뉴 나오는데요

        픽셀 단위로 지우려고 하는데 전체가 지워질때가 있습니다..

        같은 코드인데 될때도 있고요... 어떻게 해야할까요??