Condividi tramite


IDirect3DDevice Interfaccia

Definizione

Ciò rappresenta un IDXGIDevice e può essere usato per l'interoperabilità tra i componenti Windows Runtime che devono scambiare riferimenti 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
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

// 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());

Commenti

Se si usa C++/WinRT, per tornare indietro e avanti tra IDirect3DDevice e IDXGIDevice, usare le funzioni IDirect3DDxgiInterfaceAccess::GetInterface e CreateDirect3D11DeviceFromDXGIDevice . È possibile visualizzare un altro esempio di codice nell'interoperabilità nativa di Composizione con DirectX e Direct2D.

Se si usa C++/CX, per tornare indietro e avanti tra IDirect3DDevice e IDXGIDevice, usare le funzioni CreateDirect3DDevice e GetDXGIInterface(IDirect3DDevice^, DXGI_TYPE**).

Metodi

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

Trim()

Taglia qualsiasi memoria grafica allocata dal dispositivo grafico per conto dell'app.

Si applica a

Vedi anche