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(); }
//画面描画で実行される。 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(); }