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устройства -or-The backBuffer device недействителен.
Примеры
В следующем примере кода показано, как вызвать метод для назначения поверхности 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 обратному буферу.
Note
Производительность значительно зависит от параметров поверхности 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_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);
[<System.Security.SecurityCritical>]
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_X8R8G8B8D3DUSAGE_RENDERTARGETD3DPOOL_DEFAULT
Мультисамплинг разрешен только на IDirect3DSurface9Ex поверхностях.