Пример #1
0
 /// <summary>
 /// Sets view clear flags for multiple render targets.
 /// </summary>
 /// <param name="id">The index of the view.</param>
 /// <param name="targets">The target surfaces that should be cleared.</param>
 /// <param name="depth">The value to fill the depth buffer.</param>
 /// <param name="stencil">The value to fill the stencil buffer.</param>
 /// <param name="rt0">The color palette index for render target 0.</param>
 /// <param name="rt1">The color palette index for render target 1.</param>
 /// <param name="rt2">The color palette index for render target 2.</param>
 /// <param name="rt3">The color palette index for render target 3.</param>
 /// <param name="rt4">The color palette index for render target 4.</param>
 /// <param name="rt5">The color palette index for render target 5.</param>
 /// <param name="rt6">The color palette index for render target 6.</param>
 /// <param name="rt7">The color palette index for render target 7.</param>
 public static void SetViewClear(
     byte id,
     ClearTargets targets,
     float depth,
     byte stencil,
     byte rt0 = byte.MaxValue,
     byte rt1 = byte.MaxValue,
     byte rt2 = byte.MaxValue,
     byte rt3 = byte.MaxValue,
     byte rt4 = byte.MaxValue,
     byte rt5 = byte.MaxValue,
     byte rt6 = byte.MaxValue,
     byte rt7 = byte.MaxValue
     )
 {
     NativeMethods.bgfx_set_view_clear_mrt(
         id,
         targets,
         depth,
         stencil,
         rt0,
         rt1,
         rt2,
         rt3,
         rt4,
         rt5,
         rt6,
         rt7
         );
 }
Пример #2
0
 public static extern void bgfx_set_view_clear_mrt(ushort id, ClearTargets flags, float depth, byte stencil, byte rt0, byte rt1, byte rt2, byte rt3, byte rt4, byte rt5, byte rt6, byte rt7);
Пример #3
0
 public static extern void bgfx_set_view_clear(ushort id, ClearTargets flags, int rgba, float depth, byte stencil);
Пример #4
0
 public static extern void bgfx_set_view_clear_mrt(byte id, ClearTargets flags, float depth, byte stencil, byte rt0, byte rt1, byte rt2, byte rt3, byte rt4, byte rt5, byte rt6, byte rt7);
Пример #5
0
 public static extern void bgfx_set_view_clear(byte id, ClearTargets flags, int rgba, float depth, byte stencil);
Пример #6
0
 /// <summary>
 /// Sets view clear flags.
 /// </summary>
 /// <param name="id">The index of the view.</param>
 /// <param name="targets">The target surfaces that should be cleared.</param>
 /// <param name="colorRgba">The clear color.</param>
 /// <param name="depth">The value to fill the depth buffer.</param>
 /// <param name="stencil">The value to fill the stencil buffer.</param>
 public static void SetViewClear(byte id, ClearTargets targets, int colorRgba, float depth = 1.0f, byte stencil = 0)
 {
     NativeMethods.bgfx_set_view_clear(id, targets, colorRgba, depth, stencil);
 }
Пример #7
0
 public void Clear(int viewport, ClearTargets clearTargets, Color color, float depth = 1.0f, byte stencil = 0)
 {
     Bgfx.SetViewClear((byte)viewport, clearTargets, (int)color.GetRGBA(), depth, stencil);
     Bgfx.Touch((byte)viewport);
 }
Пример #8
0
        public void SetViewport(Viewport viewport, Matrix4F viewMatrix, Matrix4F projectionMatrix,
                                FrameBufferTypes clearBuffers, ColorValue clearBackgroundColor, float clearDepthValue = 1, byte clearStencilValue = 0)
        {
            currentViewport = viewport;
            currentViewNumber++;

            //init bgfx view

            Bgfx.ResetView(CurrentViewNumber);

            bool skip         = false;
            var  renderWindow = currentViewport.parent as RenderWindow;

            if (renderWindow != null && renderWindow.ThisIsApplicationWindow)
            {
                skip = true;
            }
            if (!skip)
            {
                Bgfx.SetViewFrameBuffer(CurrentViewNumber, currentViewport.parent.FrameBuffer);
            }

            Bgfx.SetViewMode(CurrentViewNumber, ViewMode.Sequential);
            Bgfx.SetViewRect(CurrentViewNumber, 0, 0, CurrentViewport.SizeInPixels.X, CurrentViewport.SizeInPixels.Y);
            unsafe
            {
                Bgfx.SetViewTransform(CurrentViewNumber, (float *)&viewMatrix, (float *)&projectionMatrix);
            }

            ////!!!!
            //if( clearBuffers == 0 )
            //{
            //	var target = viewport.Parent as RenderTexture;
            //	if( target != null )
            //	{
            //		if( !target.Creator._renderTargetCleared )
            //		{
            //			clearBuffers = FrameBufferTypes.Color;
            //			//clearBuffers = FrameBufferTypes.All;
            //		}
            //	}
            //}

            //clear
            if (clearBuffers != 0)
            {
                ClearTargets targets = 0;
                if ((clearBuffers & FrameBufferTypes.Color) != 0)
                {
                    targets |= ClearTargets.Color;
                }
                if ((clearBuffers & FrameBufferTypes.Depth) != 0)
                {
                    targets |= ClearTargets.Depth;
                }
                if ((clearBuffers & FrameBufferTypes.Stencil) != 0)
                {
                    targets |= ClearTargets.Stencil;
                }
                Bgfx.SetViewClear(CurrentViewNumber, targets, ToRGBA(clearBackgroundColor), clearDepthValue, clearStencilValue);

                Bgfx.Touch(CurrentViewNumber);
            }

            ////!!!!
            //if( clearBuffers != 0 )//if( clearBuffers == FrameBufferTypes.All )
            //{
            //	var target = viewport.Parent as RenderTexture;
            //	if( target != null )
            //		target.Creator._renderTargetCleared = true;
            //}

            //u_viewportSettings
            unsafe
            {
                var data = new ViewportSettingsUniform();
                data.size    = viewport.SizeInPixels.ToVector2F();
                data.sizeInv = new Vector2F(1, 1) / data.size;

                int vec4Count = sizeof(ViewportSettingsUniform) / sizeof(Vector4F);
                if (vec4Count != 1)
                {
                    Log.Fatal("Component_RenderingPipeline: Render: vec4Count != 1.");
                }
                SetUniform("u_viewportSettings", ParameterType.Vector4, vec4Count, &data);
            }
        }
Пример #9
0
 /// <summary>
 /// Sets view clear flags for multiple render targets.
 /// </summary>
 /// <param name="id">The index of the view.</param>
 /// <param name="targets">The target surfaces that should be cleared.</param>
 /// <param name="depth">The value to fill the depth buffer.</param>
 /// <param name="stencil">The value to fill the stencil buffer.</param>
 /// <param name="rt0">The color palette index for render target 0.</param>
 /// <param name="rt1">The color palette index for render target 1.</param>
 /// <param name="rt2">The color palette index for render target 2.</param>
 /// <param name="rt3">The color palette index for render target 3.</param>
 /// <param name="rt4">The color palette index for render target 4.</param>
 /// <param name="rt5">The color palette index for render target 5.</param>
 /// <param name="rt6">The color palette index for render target 6.</param>
 /// <param name="rt7">The color palette index for render target 7.</param>
 public static void SetViewClear(
     byte id,
     ClearTargets targets,
     float depth,
     byte stencil,
     byte rt0 = byte.MaxValue,
     byte rt1 = byte.MaxValue,
     byte rt2 = byte.MaxValue,
     byte rt3 = byte.MaxValue,
     byte rt4 = byte.MaxValue,
     byte rt5 = byte.MaxValue,
     byte rt6 = byte.MaxValue,
     byte rt7 = byte.MaxValue
 )
 {
     NativeMethods.bgfx_set_view_clear_mrt(
         id,
         targets,
         depth,
         stencil,
         rt0,
         rt1,
         rt2,
         rt3,
         rt4,
         rt5,
         rt6,
         rt7
     );
 }
Пример #10
0
 /// <summary>
 /// Sets view clear flags.
 /// </summary>
 /// <param name="id">The index of the view.</param>
 /// <param name="targets">The target surfaces that should be cleared.</param>
 /// <param name="colorRgba">The clear color.</param>
 /// <param name="depth">The value to fill the depth buffer.</param>
 /// <param name="stencil">The value to fill the stencil buffer.</param>
 public static void SetViewClear(byte id, ClearTargets targets, int colorRgba, float depth = 1.0f, byte stencil = 0)
 {
     NativeMethods.bgfx_set_view_clear(id, targets, colorRgba, depth, stencil);
 }