Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="D3D10RendererToImageSource"/> class.
 /// </summary>
 /// <param name="scene">The scene to render.</param>
 /// <param name="d3dImageSource">The D3D image source, which is the target of the rendering.</param>
 /// <exception cref="ArgumentNullException">
 /// </exception>
 public D3D10RendererToImageSource(IScene scene, D3D10ImageSource d3dImageSource, string name = "Unnamed")
 {
     Name            = name;
     InstanceID      = ++_instanceCounter;
     Scene           = scene ?? throw new ArgumentNullException(nameof(scene));
     _d3dImageSource = d3dImageSource ?? throw new ArgumentNullException(nameof(d3dImageSource));
     _d3dImageSource.IsFrontBufferAvailableChanged += EhIsFrontBufferAvailableChanged;
 }
Esempio n. 2
0
		public Graph3DControl()
		{
			InitializeComponent();

			_scene = new D3D10Scene();
			var imageSource = new D3D10ImageSource();
			_renderer = new D3D10RendererToImageSource(_scene, imageSource);
			_d3dCanvas.Source = imageSource;
		}
Esempio n. 3
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_isDisposed)
            {
                EndD3D();
                _d3dImageSource.IsFrontBufferAvailableChanged -= EhIsFrontBufferAvailableChanged;
                _d3dImageSource = null;

                _isDisposed = true;
            }
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="D3D10RendererToImageSource"/> class.
		/// </summary>
		/// <param name="scene">The scene to render.</param>
		/// <param name="d3dImageSource">The D3D image source, which is the target of the rendering.</param>
		/// <exception cref="ArgumentNullException">
		/// </exception>
		public D3D10RendererToImageSource(IScene scene, D3D10ImageSource d3dImageSource)
		{
			if (null == scene)
				throw new ArgumentNullException(nameof(scene));

			if (null == d3dImageSource)
				throw new ArgumentNullException(nameof(d3dImageSource));

			this.Scene = scene;
			this._d3dImageSource = d3dImageSource;
			this._d3dImageSource.IsFrontBufferAvailableChanged += EhIsFrontBufferAvailableChanged;
		}
Esempio n. 5
0
        public void SetRenderTargetDX10(SharpDX.Direct3D10.Texture2D renderTarget)
        {
            if (_isDisposed)
            {
                throw new ObjectDisposedException(GetType().Name);
            }

            // System.Diagnostics.Debug.WriteLine("D3DImageSource.SetRenderTarget Name={0}, Id={1}, renderTarget={2}", Name, InstanceID, renderTarget);

            if (_renderTarget != null)
            {
                Disposer.RemoveAndDispose(ref _renderTarget);

                base.Lock();
                base.SetBackBuffer(D3DResourceType.IDirect3DSurface9, IntPtr.Zero);
                base.Unlock();
            }

            if (renderTarget != null)
            {
                if (!IsShareable(renderTarget))
                {
                    throw new ArgumentException("Texture must be created with ResourceOptionFlags.Shared");
                }

                Format format = D3D10ImageSource.TranslateFormat(renderTarget);
                if (format == Format.Unknown)
                {
                    throw new ArgumentException("Texture format is not compatible with OpenSharedResource");
                }

                IntPtr handle = GetSharedHandle(renderTarget);
                if (handle == IntPtr.Zero)
                {
                    throw new ArgumentNullException("Handle");
                }

                _renderTarget = new Texture(D3D10ImageSource._d3DDevice, renderTarget.Description.Width, renderTarget.Description.Height, 1, Usage.RenderTarget, format, Pool.Default, ref handle);
                using (Surface surface = _renderTarget.GetSurfaceLevel(0))
                {
                    base.Lock();
                    base.SetBackBuffer(D3DResourceType.IDirect3DSurface9, surface.NativePointer);
                    base.Unlock();
                }
            }
            // System.Diagnostics.Debug.WriteLine("D3DImageSource.SetRenderTarget(end) Name={0}, Id={1}, renderTarget={2}, Size={3}x{4}", Name, InstanceID, renderTarget, this.PixelWidth, this.PixelHeight);
        }
		public void Dispose()
		{
			_isDisposed = true;
			EndD3D();

			_d3dImageSource.IsFrontBufferAvailableChanged -= EhIsFrontBufferAvailableChanged;
			_d3dImageSource = null;
		}