private void Draw(int obj, float angle = 30) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT | Gl.GL_ACCUM_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); Gl.glRotated(angle, 0, 1, 0); Gl.glRotated(0, 1, 0, 0); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); if (WireRadioButton.Checked) { Gl.glColor3f(1, 1, 1); switch (obj) { // Конус case 1: { Glut.glutWireCone(0.2, 0.75, 16, 8); break; } // Куб case 2: { Glut.glutWireCube(0.75); break; } //Цилиндр case 3: { Glut.glutWireCylinder(0.2, 0.75, 16, 16); break; } // Додекаэдр case 4: { Gl.glScaled(0.5, 0.5, 0.5); Glut.glutWireDodecahedron(); break; } // Икосаэдр case 5: { Glut.glutWireIcosahedron(); break; } // Октаэдр case 6: { Glut.glutWireOctahedron(); break; } //Ромбический додекаэдр case 7: { Glut.glutWireRhombicDodecahedron(); break; } //Фрактал Губка Серпиского case 8: { double[] offset = { 0, 0, 0 }; Glut.glutWireSierpinskiSponge(7, offset, 1); break; } // Сфера case 9: { Glut.glutWireSphere(0.75, 16, 16); break; } // Чайник case 10: { Glut.glutWireTeapot(0.5); break; } // Тетраэдр case 11: { Gl.glRotated(180, 0, 1, 0); Glut.glutWireTetrahedron(); break; } // Тор case 12: { Glut.glutWireTorus(0.15, 0.65, 16, 16); break; } } } else if (SolidRadioButton.Checked) { float[] lghtClr = { 1, 1, 1, 0 }; Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_FILL); Gl.glShadeModel(Gl.GL_SMOOTH); Gl.glEnable(Gl.GL_LIGHTING); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, light_position); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_AMBIENT, lghtClr); Gl.glEnable(Gl.GL_LIGHT0); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, mtClr); ShowSolid(obj); Gl.glDisable(Gl.GL_LIGHTING); } Pr.Invalidate(); }