Render() public method

Render something.
public Render ( RenderEventArgs arg ) : void
arg RenderEventArgs
return void
Beispiel #1
0
        ///// <summary>
        ///// Occurs before this object and all of its children's rendering.
        ///// </summary>
        //public event EventHandler BeforeRendering;

        ///// <summary>
        ///// Occurs before this object and all of its children's rendering.
        ///// </summary>
        //internal void DoBeforeRendering()
        //{
        //    EventHandler handler = this.BeforeRendering;
        //    if (handler != null)
        //    {
        //        handler(this, new EventArgs());
        //    }
        //}

        /// <summary>
        ///
        /// </summary>
        /// <param name="arg"></param>
        public void Render(RenderEventArgs arg)
        {
            RendererBase renderer = this.Renderer;

            if (renderer != null)
            {
                renderer.Render(arg);
            }
        }
        /// <summary>
        /// Render something.
        /// </summary>
        /// <param name="arg"></param>
        protected virtual void DoRender(RenderEventArgs arg)
        {
            if (this.locationUpdated)
            {
                this.viewportState.X    = this.Location.X;
                this.viewportState.Y    = this.Location.Y;
                this.scissorTestState.X = this.Location.X;
                this.scissorTestState.Y = this.Location.Y;
                this.locationUpdated    = false;
            }

            if (this.sizeUpdated)
            {
                this.viewportState.Width     = this.Size.Width;
                this.viewportState.Height    = this.Size.Height;
                this.scissorTestState.Width  = this.Size.Width;
                this.scissorTestState.Height = this.Size.Height;
                this.sizeUpdated             = false;
            }

            this.viewportState.On();
            this.scissorTestState.On();
            int count = this.stateList.Count;

            for (int i = 0; i < count; i++)
            {
                this.stateList[i].On();
            }

            if (this.ClearDepthBuffer)
            {
                // 把所有在此之前渲染的内容都推到最远。
                // Push all rendered stuff to farest position.
                OpenGL.Clear(OpenGL.GL_DEPTH_BUFFER_BIT);
            }

            RendererBase renderer = this.Renderer;

            if (renderer != null)
            {
                renderer.Render(arg);
            }

            for (int i = count - 1; i >= 0; i--)
            {
                this.stateList[i].Off();
            }
            this.scissorTestState.Off();
            this.viewportState.Off();
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="arg"></param>
        protected override void DoRender(RenderEventArgs arg)
        {
            this.viewportSwitch.X         = this.Location.X;
            this.viewportSwitch.Y         = this.Location.Y;
            this.viewportSwitch.Width     = this.Size.Width;
            this.viewportSwitch.Height    = this.Size.Height;
            this.scissorTestSwitch.X      = this.Location.X;
            this.scissorTestSwitch.Y      = this.Location.Y;
            this.scissorTestSwitch.Width  = this.Size.Width;
            this.scissorTestSwitch.Height = this.Size.Height;

            this.viewportSwitch.On();
            this.scissorTestSwitch.On();
            int count = this.switchList.Count;

            for (int i = 0; i < count; i++)
            {
                this.switchList[i].On();
            }

            // 把所有在此之前渲染的内容都推到最远。
            // Push all rendered stuff to farest position.
            OpenGL.Clear(OpenGL.GL_DEPTH_BUFFER_BIT);

            RendererBase renderer = this.Renderer;

            if (renderer != null)
            {
                renderer.Render(arg);
            }

            for (int i = count - 1; i >= 0; i--)
            {
                this.switchList[i].Off();
            }
            this.scissorTestSwitch.Off();
            this.viewportSwitch.Off();
        }