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
поверхностях.