Compartir a través de


IDirect3DDevice Interfaz

Definición

Esto representa un IDXGIDevice y se puede usar para interoperabilidad entre Windows Runtime componentes que necesitan intercambiar referencias IDXGIDevice.

public interface class IDirect3DDevice : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2742428843, 36191, 18000, 157, 62, 158, 174, 61, 155, 198, 112)]
struct IDirect3DDevice : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(2742428843, 36191, 18000, 157, 62, 158, 174, 61, 155, 198, 112)]
public interface IDirect3DDevice : System.IDisposable
Public Interface IDirect3DDevice
Implements IDisposable
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

// Create a new Windows Console Application (C++/WinRT) project, and
// replace the contents of `pch.h` and `main.cpp` source code files with the code below.
// Be aware that the code below omits the details of obtaining a WinRT Direct3DDevice in
// the first segment of code, and obtaining a native DirectX device in the second segment.
// The code shows only how to perform the conversion between the two.

// pch.h
#pragma once
#include <d3d11_4.h>
#include <Windows.Graphics.DirectX.Direct3D11.interop.h>
#include <unknwn.h>

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Graphics.DirectX.Direct3D11.h>

// main.cpp
#include "pch.h"
int main()
{
    winrt::init_apartment();

    // To get the native DirectX device that is wrapped by a Direct3DDevice.

    winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice d3dDevice /* = ... */;
    winrt::com_ptr<::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess> dxgiInterfaceAccess{
        d3dDevice.as<::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>()
    };
    winrt::com_ptr<::IDXGIDevice> nativeDevice;
    winrt::check_hresult(dxgiInterfaceAccess->GetInterface(
        __uuidof(nativeDevice),
        nativeDevice.put_void()));

    // To create a new Direct3DDevice object wrapping a native DirectX device.

    winrt::com_ptr<::IDXGIDevice> nativeDevice2 /* = ... */;
    winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice d3dDevice2{ nullptr };
    winrt::check_hresult(::CreateDirect3D11DeviceFromDXGIDevice(
        nativeDevice2.get(),
        reinterpret_cast<::IInspectable**>(winrt::put_abi(d3dDevice2))));
}
// First include the necessary headers and namespaces.
#include <Windows.Graphics.DirectX.Direct3D11.interop.h>
#include <dxgi.h>

using namespace Windows::Graphics::DirectX::Direct3D11;
using namespace Microsoft::WRL;

// To get the native DirectX device that is wrapped by a Direct3DDevice.

IDirect3DDevice^ d3dDevice = ...;  
ComPtr<IDXGIDevice> nativeDevice;

HRESULT hr = GetDXGIInterface(d3dDevice, nativeDevice.GetAddressOf());

// To create a new Direct3DDevice object wrapping a native DirectX device.

ComPtr<IDXGIDevice> nativeDevice = ...;
IDirect3DDevice^ winRTDevice = CreateDirect3DDevice(nativeDevice.Get());

Comentarios

Si usa C++/WinRT, para moverse hacia atrás y hacia delante entre IDirect3DDevice e IDXGIDevice, use las funciones IDirect3DDxgiInterfaceAccess::GetInterface y CreateDirect3D11DeviceFromDXGIDevice . Puede ver otro ejemplo de código en La interoperación nativa de composición con DirectX y Direct2D.

Si usa C++/CX, para moverse de nuevo y adelante entre las funciones IDirect3DDevice e IDXGIDevice, use las funciones CreateDirect3DDevice y GetDXGIInterface(IDirect3DDevice^, DXGI_TYPE**).

Métodos

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

Trim()

Recorta cualquier memoria gráfica asignada por el dispositivo gráfico en nombre de la aplicación.

Se aplica a

Consulte también