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; }