Ejemplo n.º 1
0
 public RectangleGuiComponent(RectangleShape shape, Color <float> color, GuiRenderMode renderMode, float padding = 2.0f)
     : base(shape)
 {
     Color      = color;
     RenderMode = renderMode;
     Padding    = 2.0f;
 }
Ejemplo n.º 2
0
        private void DrawImage(Rectanglef rectangle, Image image, Colorf color, GuiRenderMode mode)
        {
            //fill rectangle with texture
            //the result color's alpha is equal texture.alpha * opacity

            //do not render image
            if (image.GpuTexture == null)
            {
                return;
            }

            var transform    = new GuiTransform();
            var renderConfig = new GuiRenderConfig()
            {
                Color = color, Config = new Vector4((int)mode)
            };

            //1.scale the rectangle
            transform.World = Matrix4x4.CreateScale(rectangle.Right - rectangle.Left, rectangle.Bottom - rectangle.Top, 1.0f);
            //2.translate it
            transform.World *= Matrix4x4.CreateTranslation(rectangle.Left, rectangle.Top, 0.0f);
            //3.keep transform matrix data
            transform.World *= Transform;

            //set projection matrix
            transform.Project = mProject;

            mTransformBuffer.Update(transform);
            mRenderConfigBuffer.Update(renderConfig);

            mDevice.SetVertexBuffer(mSquareVertexBuffer);
            mDevice.SetIndexBuffer(mSquareIndexBuffer);

            mDevice.SetBuffer(mTransformBuffer, mTransformBufferSlot, GpuShaderType.All);
            mDevice.SetBuffer(mRenderConfigBuffer, mRenderConfigBufferSlot, GpuShaderType.All);
            mDevice.SetResourceUsage(image.GpuResourceUsage, mTextureSlot, GpuShaderType.All);

            mDevice.DrawIndexed(6, 0, 0);
        }