Exemplo n.º 1
0
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            GL.MatrixMode(MatrixMode.Modelview);
            var modelView = Matrix4.LookAt(Vector3.UnitZ * 10, Vector3.Zero, Vector3.UnitY);

            GL.LoadMatrix(ref modelView);

            GL.MatrixMode(MatrixMode.Projection);
            var projection = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, (float)this.Width / (float)this.Height, 1.0f, 64.0f);

            GL.LoadMatrix(ref projection);


            GL.Light(LightName.Light0, LightParameter.Position, _lightPosition);
            GL.Light(LightName.Light0, LightParameter.Ambient, _lightAmbient);
            GL.Light(LightName.Light0, LightParameter.Diffuse, _lightDiffuse);
            GL.Light(LightName.Light0, LightParameter.Specular, _lightSpecular);

            GL.Material(MaterialFace.Front, MaterialParameter.Ambient, _materialAmbient);
            GL.Material(MaterialFace.Front, MaterialParameter.Diffuse, _materialDiffuse);
            GL.Material(MaterialFace.Front, MaterialParameter.Specular, _materialSpecular);
            GL.Material(MaterialFace.Front, MaterialParameter.Shininess, _materialShininess);

            GL.MatrixMode(MatrixMode.Modelview);
            GL.PushMatrix();
            UtilGL.DrawSphere();
            GL.PopMatrix();

            SwapBuffers();
        }
Exemplo n.º 2
0
        //画面描画で実行される。
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            _fps.Aggregate(e.Time);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            #region TransFormationMatrix

            Matrix4 modelView = Matrix4.LookAt(Vector3.UnitZ * 10 / zoom, Vector3.Zero, Vector3.UnitY);
            GL.MatrixMode(MatrixMode.Modelview);
            GL.LoadMatrix(ref modelView);
            GL.MultMatrix(ref rotate);

            Matrix4 projection = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4 / zoom, (float)this.Width / (float)this.Height, 1.0f, 64.0f);
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadMatrix(ref projection);

            #endregion

            GL.Light(LightName.Light0, LightParameter.Position, lightPosition);
            GL.Light(LightName.Light0, LightParameter.Ambient, lightAmbient);
            GL.Light(LightName.Light0, LightParameter.Diffuse, lightDiffuse);
            GL.Light(LightName.Light0, LightParameter.Specular, lightSpecular);

            GL.Material(MaterialFace.Front, MaterialParameter.Ambient, materialAmbient);
            GL.Material(MaterialFace.Front, MaterialParameter.Diffuse, materialDiffuse);
            GL.Material(MaterialFace.Front, MaterialParameter.Specular, materialSpecular);
            GL.Material(MaterialFace.Front, MaterialParameter.Shininess, materialShininess);

            GL.MatrixMode(MatrixMode.Modelview);
            GL.PushMatrix();                    //現在の(Modelview)行列をスタックに
            GL.Translate(2 * Vector3.UnitX);    //X軸方向に2移動
            UtilGL.DrawCube();                  //立方体を描画
            GL.PopMatrix();                     //スタックから(Modelview)行列を取り出す
            GL.PushMatrix();                    //現在の行列をスタックに
            GL.Translate(-2 * Vector3.UnitX);   //X軸方向に-2移動
            UtilGL.DrawSphere();                //球を描画
            GL.PopMatrix();                     //スタックから(Modelview)行列を取り出す



            SwapBuffers();
        }