Example #1
0
        ////////////////////////////////////////////////////
        #region コンストラクタ、デストラクタ
        /// <summary>
        /// 初期化を行います。
        /// </summary>
        public D3DViewerViewModel()
        {
            _imageSource = new DX10ImageSource();

            var config = Util.GetConfigManager();

            initializeDirect3D(
                config.Parameters.BackBufferWidth,
                config.Parameters.BackBufferHeight,
                config.Parameters.DistortionSurfaceResolutionWidth,
                config.Parameters.DistortionSurfaceResolutionHeight,
                config.Parameters.DistortionThetaMappingDepth,
                config.Parameters.CameraPitchAngle,
                config.Parameters.CameraOffsetY,
                config.Parameters.CameraScale,
                config.Parameters.OffsetU
                );
        }
Example #2
0
        public void SetRenderTargetDX10(SharpDX.Direct3D10.Texture2D renderTarget)
        {
            if (this.RenderTarget != null)
            {
                this.RenderTarget = null;

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

            if (renderTarget == null)
            {
                return;
            }

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

            Format format = DX10ImageSource.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");
            }

            this.RenderTarget = new Texture(DX10ImageSource.D3DDevice, renderTarget.Description.Width, renderTarget.Description.Height, 1, Usage.RenderTarget, format, Pool.Default, ref handle);
            using (Surface surface = this.RenderTarget.GetSurfaceLevel(0))
            {
                base.Lock();
                base.SetBackBuffer(D3DResourceType.IDirect3DSurface9, surface.NativePointer);
                base.Unlock();
            }
        }