When drawing a square using glutMouseFunc(mouseButton) I switch between two buffers. How to draw squares in only one? (Only when drawing squares). Can I somehow create my buffer? Attach the code and screenshots.

 void changeSize(int w, int h) { if (h == 0) h = 1; float ratio = 1.0* w / h; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ glMatrixMode(GL_PROJECTION); // Reset ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ glLoadIdentity(); // опрСдСляСм ΠΎΠΊΠ½ΠΎ просмотра glViewport(0, 0, w, h); glOrtho(0.0f, w, h, 0.0f, 0.0f, 1.0f); // Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ glMatrixMode(GL_MODELVIEW); } void game_field(void) { glBegin(GL_LINE_LOOP); glColor3f(1.0, 1.0, 1.0); glVertex2f(50, 50); glVertex2f(1230, 50); glVertex2f(1230, 650); glVertex2f(50, 650); glEnd(); glBegin(GL_LINES); int x = 60; int y = 60; for (int i = 0; i < 117; i++)//Π›ΠΈΠ½ΠΈΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ { glColor3ub(25, 25, 25); glVertex2f(x, 50); glVertex2f(x, 649); x = x + 10; } for (int i = 0; i < 59; i++)//Π›ΠΈΠ½ΠΈΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ { glVertex2f(50, y); glVertex2f(1229, y); y = y + 10; } glEnd(); glutSwapBuffers(); } void processNormalKeys(unsigned char key, int x, int y) { if (key == 27) exit(0); else if (key == 'f') { int mod = glutGetModifiers(); if (mod == GLUT_ACTIVE_ALT) { glutPositionWindow(43, 31); glutReshapeWindow(1280, 700); } else glutFullScreen(); } } void mouseButton(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON) { if (state == GLUT_UP) { int x_field = 49, y_field = 49; while (x_field <= x) { x_field = x_field + 10; } while (y_field <= y) { y_field = y_field + 10; } glBegin(GL_QUADS); glColor3ub(0, 200, 0); glVertex2f(x_field - 9, y_field - 9); glVertex2f(x_field, y_field - 9); glVertex2f(x_field, y_field); glVertex2f(x_field - 9, y_field); glEnd(); glutSwapBuffers(); } } } int main(int argc, char **argv) { // инициализация glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(43, 0); glutInitWindowSize(1280, 700); glutCreateWindow("Π£Ρ€ΠΎΠΊ 2"); // рСгистрация glutDisplayFunc(game_field); // Новая функция измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π° glutReshapeFunc(changeSize); glutKeyboardFunc(processNormalKeys); glutMouseFunc(mouseButton); // основной Ρ†ΠΈΠΊΠ» glutMainLoop(); return 0; } 

1st click 2nd click 3rd click 4th click

    0