示例#1
0
        /// <summary>
        /// Color coded picking.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void winGLCanvas1_MouseMove(object sender, MouseEventArgs e)
        {
            LegacyTriangleRenderer triangleTip = this.triangleTip;

            if (triangleTip == null)
            {
                return;
            }

            int            x = e.X;
            int            y = this.winGLCanvas1.Height - e.Y - 1;
            PickedGeometry pickedGeometry = this.scene.Pick(x, y, PickingGeometryType.Triangle);

            if (pickedGeometry != null)
            {
                triangleTip.Vertex0 = pickedGeometry.Positions[0];
                triangleTip.Vertex1 = pickedGeometry.Positions[1];
                triangleTip.Vertex2 = pickedGeometry.Positions[2];
                triangleTip.Parent  = pickedGeometry.FromRenderer as RendererBase;
            }
            else
            {
                triangleTip.Parent = null;
            }
        }
示例#2
0
        private void FormMain_Load(object sender, EventArgs e)
        {
            var position = new vec3(5, 3, 4);
            var center   = new vec3(0, 0, 0);
            var up       = new vec3(0, 1, 0);
            var camera   = new Camera(position, center, up, CameraType.Perspecitive, this.winGLCanvas1.Width, this.winGLCanvas1.Height);

            this.teapot = TeapotRenderer.Create();
            teapot.Children.Add(new LegacyBoundingBoxRenderer(teapot.ModelSize));

            this.scene = new Scene(camera, this.winGLCanvas1)
            {
                RootElement = teapot,
            };

            this.triangleTip = new LegacyTriangleRenderer();
            this.chkRenderWireframe_CheckedChanged(this.chkRenderWireframe, EventArgs.Empty);
            this.chkRenderBody_CheckedChanged(this.chkRenderBody, EventArgs.Empty);
        }