示例#1
0
文件: Teapot.cs 项目: n1hs/OpenGL_UI
        protected override void DrawLine(OpenGL gl)
        {
            gl.Translate(0.0, 0.0, SizeX - 0.25 * SizeX);
            gl.Rotate(90, 1.0, 0.0, 0.0);

            SharpGL.SceneGraph.Primitives.Teapot teapot = new SharpGL.SceneGraph.Primitives.Teapot();
            teapot.Draw(gl, Stacks, SizeX, OpenGL.GL_LINE);
        }
示例#2
0
        private void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args)
        {
            init();
            var gl = openGLControl1.OpenGL;

            gl.Enable(OpenGL.GL_LIGHTING);
//            gl.LightModel(OpenGL.GL_LIGHT_MODEL_AMBIENT, _black);

            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.ClearColor(0.5f, 0.5f, 0.5f, 1f);

            gl.Enable(OpenGL.GL_BLEND);          // Разрешить прозрачность.
            gl.Enable(OpenGL.GL_POINT_SMOOTH);   // Разрешить сглаживание точек.
            gl.Enable(OpenGL.GL_COLOR_MATERIAL); // Отключить перелевание цвета.
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PointSize(16);                    // Размер точки.
            gl.LineWidth(2);                     // Толщина линий.

            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, _l0pos);
            _figureSphere1.Draw(gl, _l0pos[0], _l0pos[1], _l0pos[2], 0, 0, 2f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, _l1pos);
//            _figureSphere2.Draw(gl, _l1pos[0], _l1pos[1], _l1pos[2], 0, 0, 0.1f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureFonar1.Draw(gl, _l1pos[0] - 0.006f, _l1pos[1] - 0.1f, _l1pos[2] + z + 1f, 0, 0, 0.03f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);

            gl.Light(OpenGL.GL_LIGHT2, OpenGL.GL_POSITION, _l2pos);
//            _figureSphere3.Draw(gl, _l2pos[0], _l2pos[1], _l2pos[2], 0, 0, 0.1f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureFonar2.Draw(gl, _l2pos[0] + 0.006f, _l2pos[1] - 0.1f, _l2pos[2] + z + 1f, 0, 0, 0.03f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);

            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureCloud.Draw(gl, -0.5f, 1.5f, -5.55f);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureCloud.Draw(gl, 2.5f, 1.5f, -5.55f);
//            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
//            _figureEarth.Draw(gl, 0f, -0.1f, -1f);


            if (checkBox1.Checked)
            {
                gl.Enable(OpenGL.GL_LIGHT0);
            }
            else
            {
                gl.Disable(OpenGL.GL_LIGHT0);
            }

            if (checkBox2.Checked)
            {
                gl.Enable(OpenGL.GL_LIGHT1);
            }
            else
            {
                gl.Disable(OpenGL.GL_LIGHT1);
            }

            if (checkBox3.Checked)
            {
                gl.Enable(OpenGL.GL_LIGHT2);
            }
            else
            {
                gl.Disable(OpenGL.GL_LIGHT2);
            }

            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureHouse.Draw(gl, 0, 0, z, 0, 0, 1f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTable.Draw(gl, 0, 0, z, 0, 0, 1f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
//            _figureDver.Draw(gl, 0, 0, 0.16f + z, _angleX, _angleY, 1f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureParallelepiped.Draw(gl, 0.29f, -0.13f, -0.55f + z + 1f);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTriangle.Draw(gl, 0.29f, -0.04f, -0.55f + z + 1f);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureHummer.Draw(gl, -0.29f, -0.17f, -0.55f + z + 1f);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureEarth2.Draw(gl, -0.29f, 10, -2.0f);


            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTrava1.Draw(gl, 0, -0.55f, 2 * z - 1f, 0, 0, 0.5f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTrava2.Draw(gl, 1f, -0.55f, z - 1f, 0, 0, 0.5f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTrava3.Draw(gl, -1f, -0.55f, 2 * z - 1f, 0, 0, 0.5f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTrava4.Draw(gl, -1.6f, -0.55f, 2 * z - 3f, 0, 0, 0.5f, 0);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            _figureTrava5.Draw(gl, 1.6f, -0.55f, 2 * z - 3f, 0, 0, 0.5f, 0);


            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, _light0Diffuse);
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, _light0Ambient);
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPECULAR, _light0Scpecular);

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_DIFFUSE, _light1Diffuse);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, _light1Ambient);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPECULAR, _light1Scpecular);

            gl.Light(OpenGL.GL_LIGHT2, OpenGL.GL_DIFFUSE, _light2Diffuse);
            gl.Light(OpenGL.GL_LIGHT2, OpenGL.GL_AMBIENT, _light2Ambient);
            gl.Light(OpenGL.GL_LIGHT2, OpenGL.GL_SPECULAR, _light2Scpecular);

            gl.Color(0.5f, 0.5f, 0.5f);
            gl.LoadIdentity(); gl.Rotate(_angleX, 1f, 0f, 0f); gl.Rotate(_angleY, 0f, 1f, 0f);
            gl.Translate(0, -0.125f, z);
            var tea = new SharpGL.SceneGraph.Primitives.Teapot();

            tea.Draw(gl, 14, 0.01, OpenGL.GL_FILL);


            gl.ColorMaterial(OpenGL.GL_FRONT_AND_BACK, OpenGL.GL_AMBIENT_AND_DIFFUSE);
            gl.Material(OpenGL.GL_FRONT_AND_BACK, OpenGL.GL_SPECULAR, _sRef);
            gl.Material(OpenGL.GL_FRONT_AND_BACK, OpenGL.GL_SHININESS, 64);

            gl.ShadeModel(OpenGL.GL_SMOOTH);
        }