private void Render(object sender, GlControlEventArgs e) { if (_shader == null) { return; } Gl.Clear(ClearBufferMask.DepthBufferBit); Gl.MatrixMode(MatrixMode.Modelview); var v = _cameraHelper.CameraMatrix; var u = Matrix4x4.CreateRotationX(Mathf.ToRadian(90)); var m = u * v; _shader.M = m; FiguresHelper.Draw3DCross(50f, 1f); Figure3DHelper.DrawSphere(15, 20, 20, true, Colors.Yellow); Gl.LineWidth(1); Figure3DHelper.DrawSphere(15, 20, 20, false, Colors.Red); _satelite.Draw(); }
private void Render(object sender, GlControlEventArgs e) { if (_shader == null) { return; } var v = _cameraHelper.CameraMatrix; _shader.M = v; _shader.ShadingLevel = 0; FiguresHelper.Draw3DCross(4, 1); _shader.ShadingLevel = 1; _shader.LightPos = new Vector3(1f, 1f, 1f); var r1 = Matrix4x4.CreateRotationY(Mathf.ToRadian(_phi)); var t = Matrix4x4.CreateTranslation(new Vector3(_radius, 2f, 0f)); var r2 = Matrix4x4.CreateRotationX(Mathf.ToRadian(90)) * Matrix4x4.CreateRotationY(Mathf.ToRadian(90)) * Matrix4x4.CreateRotationZ(Mathf.ToRadian(45)); var scaleM = Matrix4x4.CreateScale(0.2f); var r3 = Matrix4x4.CreateRotationY(Mathf.ToRadian(-_phi * 10)); var r4 = Matrix4x4.CreateRotationZ(Mathf.ToRadian(25)); var m = r3 * r2 * t * r1 * scaleM * r4; _shader.M = m * v; Figure3DHelper.DrawMesh(_boomerang, Colors.Chocolate); _phi += _step; }
private void DrawSphere(Vector2 pos, Vector2 v, Vector2 a, Color color) { var t = Matrix4x4.CreateTranslation(new Vector3(pos, 0)); var vM = _cameraHelper.CameraMatrix; _shader.M *= t * vM; Figure3DHelper.DrawSphere(2, 20, 20, true, color); }