示例#1
0
        /// <summary>
        /// Creates a new RenderTarget based in a previously created RenderTarget from C++
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="name"></param>
        /// <param name="internalRenderTarget"></param>
        internal RenderTarget(VisualEngine engine, StringBuilder name, _RenderTarget internalRenderTarget)
            : this(engine, name)
        {
            Engine.Log.AddInformation(TAG, new StringBuilder("Create " + Name + " (C++ _RenderTarget based)"));

            Internal = internalRenderTarget;

            Texture = new Texture2D(engine, name, Internal.GetTexture());
        }
示例#2
0
        /// <summary>
        /// Creates a new RenderTarget object
        /// </summary>
        /// <param name="engine"></param>
        /// <param name="name"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        internal RenderTarget(VisualEngine engine, StringBuilder name, int width, int height)
            : this(engine, name)
        {
            Engine.Log.AddInformation(TAG, new StringBuilder("Create " + Name + " " + width + "x" + height + " RGBA"));

            Texture = new Texture2D(engine, name);

            Texture.CreateForRenderTargetUse(name, width, height, TextureFormat.RGBA);

            Internal = new _RenderTarget(Engine.Device, Texture.InternalTexture2D);
        }
示例#3
0
        /// <summary>
        /// Resize the RenderTarget if needed
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        internal void Resize(int width, int height)
        {
            if (width == Texture.Width && height == Texture.Height)
            {
                return;
            }

            Engine.Log.AddInformation(TAG, new StringBuilder("Resize " + Name + ": " + Width + "x" + Height));

            if (Internal.IsSwapChain)
            {
                Internal.Resize(width, height);
                return;
            }

            // Destroys Texture2D

            Texture.Destroy();

            // Destroys _RenderTarget

            Internal.Destroy();

            if (Internal.IsDX9BackBuffer)
            {
                Engine.Log.AddInformation(TAG, new StringBuilder("Recreating " + Name));

                _RenderTarget renderTarget = Engine.Device.CreateDX9SharedRenderTarget(Name.ToString(), width, height);
                Internal         = renderTarget;
                Texture.Internal = renderTarget.GetTexture();
            }
            else
            {
                Texture.CreateForRenderTargetUse(Texture.Name, width, height, Texture.Format);

                Internal = new _RenderTarget(Engine.Device, Texture.InternalTexture2D);
            }
        }
示例#4
0
        /// <summary>
        /// Creates a <see cref="RenderTarget"/> compatible with DX9 and WPF
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        public RenderTarget CreateSwapChainRenderTarget(string name, IntPtr hwnd)
        {
            _RenderTarget renderTarget = Device.CreateSwapChainRenderTarget(name, (int)hwnd);

            return(RenderTargets.Create(new StringBuilder("DXBackBuffer"), renderTarget));
        }
示例#5
0
        /// <summary>
        /// Creates a <see cref="RenderTarget"/> compatible with DX9 and WPF
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        public RenderTarget CreateDX9SharedRenderTarget(string name, int width, int height)
        {
            _RenderTarget renderTarget = Device.CreateDX9SharedRenderTarget(name, width, height);

            return(RenderTargets.Create(new StringBuilder(name), renderTarget));
        }
示例#6
0
 DrawAsset(_RenderTarget, transform, asset);