示例#1
0
        //public void ClearCurrentViewport( FrameBufferTypes buffers, ColorValue backgroundColor, float depth = 1, uint stencil = 0 )
        //{
        //	if( currentViewport == null )
        //		Log.Fatal( "ViewportRenderingContext: ClearCurrentViewport: CurrentViewport == null." );

        //	//!!!!mrt уметь чистить. хотя не обязательно

        //	ClearTargets targets = 0;
        //	if( (buffers & FrameBufferTypes.Color) != 0 )
        //		targets |= ClearTargets.Color;
        //	if( (buffers & FrameBufferTypes.Depth) != 0 )
        //		targets |= ClearTargets.Depth;
        //	if( (buffers & FrameBufferTypes.Stencil) != 0 )
        //		targets |= ClearTargets.Stencil;
        //	Bgfx.SetViewClear( CurrentViewNumber, targets, ToRGBA( backgroundColor ), xx, xx );

        //	Bgfx.Touch( CurrentViewNumber );
        //}

        //!!!!!как тут это всё с Viewport и multirendertarget?
        //!!!!!для RenderQuad добавить "RectI? scissorRectangle"?
        public void RenderQuadToCurrentViewport(CanvasRenderer.ShaderItem shader, CanvasRenderer.BlendingType blending = CanvasRenderer.BlendingType.Opaque, bool flipY = false)
        {
            if (currentViewport == null)
            {
                Log.Fatal("ViewportRenderingContext: RenderQuadToCurrentViewport: CurrentViewport == null.");
            }

            renderer.PushShader(shader);
            renderer.PushBlendingType(blending);              // GuiRenderer.BlendingType.Opaque );

            if (flipY)
            {
                renderer.AddQuad(new Rectangle(0, 0, 1, 1), new Rectangle(0, 1, 1, 0), null, new ColorValue(1, 1, 1), false);
            }
            else
            {
                renderer.AddQuad(new Rectangle(0, 0, 1, 1), new Rectangle(0, 0, 1, 1), null, new ColorValue(1, 1, 1), false);
            }

            renderer.PopBlendingType();
            renderer.PopShader();

            //!!!!!!так?
            double time = Owner.LastUpdateTime;

            //!!!!можно ли чистить? или позже надо?
            renderer._ViewportRendering_RenderToCurrentViewport(this, true, time);
        }
示例#2
0
        public void RenderTrianglesToCurrentViewport(CanvasRenderer.ShaderItem shader, IList <CanvasRenderer.TriangleVertex> vertices, CanvasRenderer.BlendingType blending = CanvasRenderer.BlendingType.Opaque)
        {
            if (currentViewport == null)
            {
                Log.Fatal("ViewportRenderingContext: RenderTrianglesToCurrentViewport: CurrentViewport == null.");
            }

            renderer.PushShader(shader);
            renderer.PushBlendingType(blending);              // GuiRenderer.BlendingType.Opaque );
            renderer.AddTriangles(vertices, null, false);
            renderer.PopBlendingType();
            renderer.PopShader();

            //!!!!!!так?
            double time = Owner.LastUpdateTime;

            //!!!!можно ли чистить? или позже надо?
            renderer._ViewportRendering_RenderToCurrentViewport(this, true, time);
        }