示例#1
0
        protected override void RenderModel(SimpleUIRectArgs args, OpenGL gl, SceneGraph.Core.RenderMode renderMode)
        {
            // Draw rectangle to show UI's scope.
            base.RenderModel(args, gl, renderMode);

            this.colorBarTransform.ScaleX = (float)args.UIWidth / (float)ColorIndicatorBar.barWidth;
            this.colorBarTransform.ScaleY = (float)args.UIHeight / (float)ColorIndicatorBar.barHeight;
            //this.colorBarTransform.ScaleZ = 1;// This is not needed.
            this.colorBarTransform.TranslateZ = -base.zNear;// make sure UI shows in front of enything else.

            this.colorNumber.CurrentArgs = args;
        }
        protected override void RenderModel(SimpleUIRectArgs args, OpenGL gl, SceneGraph.Core.RenderMode renderMode)
        {
            // Draw rectangle to show UI's scope.
            base.RenderModel(args, gl, renderMode);

            // ** / 2: half of width/height,
            // ** / 3: CylinderAxis' length is 3.
            this.axisTransform.ScaleX = args.UIWidth / 2 / 3;
            this.axisTransform.ScaleY = args.UIHeight / 2 / 3;
            int max = Math.Max(args.UIWidth, args.UIHeight);

            this.axisTransform.ScaleZ = (this.CoordSystem == CoordinateSystem.RightHand ? 1 : -1) * max / 2 / 3;
            //this.axisTransform.TranslateZ = base.zFar;// make sure UI shows in front of enything else.
            //var target2Position = base.Camera.Position - base.Camera.Target;
            //target2Position.Normalize();
            //target2Position *= 100;
            //this.axisTransform.TranslateX = base.Camera.Position.X + target2Position.X;
            //this.axisTransform.TranslateY = base.Camera.Position.Y + target2Position.Y;
            //this.axisTransform.TranslateZ = base.Camera.Position.Z + target2Position.Z;
        }
        /// <summary>
        /// Render the element that inherts <see cref="IColorCodedPicking"/> for color coded picking.
        /// </summary>
        /// <param name="picking"></param>
        /// <param name="gl"></param>
        /// <param name="renderMode"></param>
        public virtual void RenderForPicking(IColorCodedPicking picking, OpenGL gl, SceneGraph.Core.RenderMode renderMode)
        {
            if (picking != null)
            {
                picking.PickingBaseID = this.RenderedVertexCount;

                //  render the element.
                SharpGL.SceneGraph.Core.IRenderable renderable = picking;
                renderable.Render(gl, renderMode);

                uint rendered = this.RenderedVertexCount + picking.GetVertexCount();
                if (this.RenderedVertexCount <= rendered)
                {
                    this.RenderedVertexCount = rendered;
                }
                else
                {
                    throw new OverflowException(
                              string.Format("Too many geometries({0} + {1} > {2}) for color coded picking.",
                                            this.RenderedVertexCount, picking.GetVertexCount(), uint.MaxValue));
                }
            }
        }
示例#4
0
 protected override void RenderModel(SimpleUIRectArgs args, OpenGL gl, SceneGraph.Core.RenderMode renderMode)
 {
     base.RenderModel(args, gl, renderMode);
 }