Поделиться через


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, которую необходимо назначить задним буфером.

Атрибуты

Исключения

Объект D3DImage не был заблокирован вызовом метода Lock() или TryLock(Duration).

backBufferType не является допустимым D3DResourceType.

Параметры создания для backBuffer не соответствуют требованиям для backBufferType, или устройство backBuffer является недопустимым.

Примеры

В следующем примере кода показано, как вызвать SetBackBuffer метод для назначения поверхности Direct3D. Дополнительные сведения см. в статье Пошаговое руководство. Размещение содержимого Direct3D9 в WPF.

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 обратному буферу.

Примечание

Производительность в значительной степени зависит от параметров поверхности Direct3D. Для получения дополнительной информации см. статью Рекомендации по производительности, связанные с взаимодействием Direct3D9 и WPF.

Вызов перегрузки SetBackBuffer(D3DResourceType, IntPtr) идентичен вызову перегрузки SetBackBuffer(D3DResourceType, IntPtr, Boolean) с параметром enableSoftwareFallback , равным false. При вызове SetBackBuffer(D3DResourceType, IntPtr) или вызове SetBackBuffer(D3DResourceType, IntPtr, Boolean) с параметром enableSoftwareFallback , равным false, система отрисовки освобождает ссылку на задний буфер, когда передний буфер становится недоступным и ничего не отображается. Если передний буфер становится снова доступен, система отрисовки вызывает событие IsFrontBufferAvailableChanged для уведомления приложения WPF. Можно создать обработчик событий для события IsFrontBufferAvailableChanged, чтобы снова перезапустить процесс отрисовки с помощью допустимой поверхности Direct3D. Чтобы перезапустить отрисовку, необходимо вызвать SetBackBuffer.

В следующем списке показаны необходимые параметры обратного буфера IDirect3DSurface9 для типа.

  • D3DFMT_A8R8G8B8 либо D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling допускается только на 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 , имеющим значение true, система отрисовки сохраняет ссылку на задний буфер, когда передний буфер становится недоступным, поэтому нет необходимости вызывать, SetBackBuffer когда передний буфер снова станет доступен. Могут возникнуть ситуации, когда устройство пользователя становится недоступным. В этом случае вызовите SetBackBuffer , чтобы освободить ссылку WPF на задний буфер. Если вам нужно сбросить устройство, вызовите SetBackBuffer с backBuffer параметром null, а затем снова вызовите SetBackBuffer с backBuffer параметром для допустимой поверхности Direct3D.

В следующем списке показаны необходимые параметры обратного буфера IDirect3DSurface9 для типа.

  • D3DFMT_A8R8G8B8 либо D3DFMT_X8R8G8B8

  • D3DUSAGE_RENDERTARGET

  • D3DPOOL_DEFAULT

Multisampling допускается только на IDirect3DSurface9Ex поверхностях.

Применяется к