D3DImage.SetBackBuffer 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将 Direct3D 图面指定为后缓冲区的源。
重载
| 名称 | 说明 |
|---|---|
| SetBackBuffer(D3DResourceType, IntPtr) |
将 Direct3D 图面指定为后缓冲区的源。 |
| SetBackBuffer(D3DResourceType, IntPtr, Boolean) |
将 Direct3D 图面指定为后缓冲区的源。 |
SetBackBuffer(D3DResourceType, IntPtr)
将 Direct3D 图面指定为后缓冲区的源。
public:
void SetBackBuffer(System::Windows::Interop::D3DResourceType backBufferType, IntPtr backBuffer);
[System.Security.SecurityCritical]
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer);
[<System.Security.SecurityCritical>]
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint -> unit
Public Sub SetBackBuffer (backBufferType As D3DResourceType, backBuffer As IntPtr)
参数
- backBufferType
- D3DResourceType
Direct3D 图面的类型。 必须是有效的 D3DResourceType。
- backBuffer
-
IntPtr
nativeint
要分配为后缓冲区的 Direct3D 图面。
- 属性
例外
backBufferType 不是有效的 D3DResourceType。
无法满足 -or-The backBuffer 设备的创建参数backBuffer无效。backBufferType
示例
下面的代码示例演示如何调用 SetBackBuffer 方法以分配 Direct3D 图面。 有关详细信息,请参阅 演练:在 WPF 中托管 Direct3D9 内容。
d3dimg.Lock();
// Repeatedly calling SetBackBuffer with the same IntPtr is
// a no-op. There is no performance penalty.
d3dimg.SetBackBuffer(D3DResourceType.IDirect3DSurface9, pSurface);
HRESULT.Check(Render());
d3dimg.AddDirtyRect(new Int32Rect(0, 0, d3dimg.PixelWidth, d3dimg.PixelHeight));
d3dimg.Unlock();
注解
SetBackBuffer调用该方法以将 Direct3D 图面分配给后台缓冲区。
Note
性能在很大程度上取决于 Direct3D 图面的设置。 有关详细信息,请参阅 Direct3D9 和 WPF 互操作性的性能注意事项。
SetBackBuffer(D3DResourceType, IntPtr)调用重载与调用SetBackBuffer(D3DResourceType, IntPtr, Boolean)参数设置为false的enableSoftwareFallback重载相同。 调用SetBackBuffer(D3DResourceType, IntPtr)或调用SetBackBuffer(D3DResourceType, IntPtr, Boolean)enableSoftwareFallback参数设置为 false 时,呈现系统在前缓冲区不可用且不显示任何内容时释放对后缓冲区的引用。 前缓冲区再次可用时,渲染系统会引发 IsFrontBufferAvailableChanged 事件以通知 WPF 应用程序。 可以为 IsFrontBufferAvailableChanged 事件创建事件处理程序,以使用有效的 Direct3D 图面重新开始渲染。 若要重启呈现,必须调用 SetBackBuffer。
以下列表显示了类型所需的后退缓冲区设置 IDirect3DSurface9 。
D3DFMT_A8R8G8B8或D3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
仅允许在图面上进行 IDirect3DSurface9Ex 多重采样。
另请参阅
适用于
SetBackBuffer(D3DResourceType, IntPtr, Boolean)
将 Direct3D 图面指定为后缓冲区的源。
public:
void SetBackBuffer(System::Windows::Interop::D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
[System.Security.SecurityCritical]
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
public void SetBackBuffer(System.Windows.Interop.D3DResourceType backBufferType, IntPtr backBuffer, bool enableSoftwareFallback);
[<System.Security.SecurityCritical>]
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint * bool -> unit
member this.SetBackBuffer : System.Windows.Interop.D3DResourceType * nativeint * bool -> unit
Public Sub SetBackBuffer (backBufferType As D3DResourceType, backBuffer As IntPtr, enableSoftwareFallback As Boolean)
参数
- backBufferType
- D3DResourceType
Direct3D 图面的类型。 必须是有效的 D3DResourceType。
- backBuffer
-
IntPtr
nativeint
要分配为后缓冲区的 Direct3D 图面。
- enableSoftwareFallback
- Boolean
true 在软件呈现时回退;否则,为 false.
- 属性
注解
调用 SetBackBuffer(D3DResourceType, IntPtr) 重载或调用 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 重载并将 enableSoftwareFallback 参数设置为 false 时,呈现系统会在前台缓冲区不可用且不显示任何内容时释放其对后台缓冲区的引用。 前缓冲区再次可用时,渲染系统会引发 IsFrontBufferAvailableChanged 事件以通知 WPF 应用程序。 可以为 IsFrontBufferAvailableChanged 事件创建事件处理程序,以使用有效的 Direct3D 图面重新开始渲染。 若要重启呈现,必须调用 SetBackBuffer。
使用参数设置为 调用SetBackBuffer(D3DResourceType, IntPtr, Boolean)enableSoftwareFallback时,呈现系统会在前缓冲区不可用时保留对后缓冲区的引用,因此当前缓冲区再次可用时无需调用SetBackBuffer。true 在某些情况下,用户的设备不可用。 发生这种情况时,调用 SetBackBuffer 释放 WPF 对后缓冲区的引用。 如果需要重置设备,请调用SetBackBufferbackBuffer设置为“设置为”null,然后再次调用SetBackBuffer并backBuffer设置为有效的 Direct3D 图面。
以下列表显示了类型所需的后退缓冲区设置 IDirect3DSurface9 。
D3DFMT_A8R8G8B8或D3DFMT_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
仅允许在图面上进行 IDirect3DSurface9Ex 多重采样。