//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); }
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); }