D3DImage.SetBackBuffer 方法

定义

将 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)参数设置为falseenableSoftwareFallback重载相同。 调用SetBackBuffer(D3DResourceType, IntPtr)或调用SetBackBuffer(D3DResourceType, IntPtr, Boolean)enableSoftwareFallback参数设置为 false 时,呈现系统在前缓冲区不可用且不显示任何内容时释放对后缓冲区的引用。 前缓冲区再次可用时,渲染系统会引发 IsFrontBufferAvailableChanged 事件以通知 WPF 应用程序。 可以为 IsFrontBufferAvailableChanged 事件创建事件处理程序,以使用有效的 Direct3D 图面重新开始渲染。 若要重启呈现,必须调用 SetBackBuffer

以下列表显示了类型所需的后退缓冲区设置 IDirect3DSurface9

  • D3DFMT_A8R8G8B8D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_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时,呈现系统会在前缓冲区不可用时保留对后缓冲区的引用,因此当前缓冲区再次可用时无需调用SetBackBuffertrue 在某些情况下,用户的设备不可用。 发生这种情况时,调用 SetBackBuffer 释放 WPF 对后缓冲区的引用。 如果需要重置设备,请调用SetBackBufferbackBuffer设置为“设置为”null,然后再次调用SetBackBufferbackBuffer设置为有效的 Direct3D 图面。

以下列表显示了类型所需的后退缓冲区设置 IDirect3DSurface9

  • D3DFMT_A8R8G8B8D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

仅允许在图面上进行 IDirect3DSurface9Ex 多重采样。

适用于