IDirect3DDevice Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
This represents an IDXGIDevice, and can be used to interop between Windows Runtime components that need to exchange IDXGIDevice references.
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
- Attributes
- Implements
Windows requirements
Device family |
Windows 10 (introduced in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduced in v1.0)
|
Examples
// 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());
Remarks
If you're using C++/WinRT, then to move back and forth between IDirect3DDevice and IDXGIDevice, use the IDirect3DDxgiInterfaceAccess::GetInterface and CreateDirect3D11DeviceFromDXGIDevice functions. You can see another code example in Composition native interoperation with DirectX and Direct2D.
If you're using C++/CX, then to move back and forth between IDirect3DDevice and IDXGIDevice, use the CreateDirect3DDevice and GetDXGIInterface(IDirect3DDevice^, DXGI_TYPE**) functions.
Methods
Dispose() |
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. |
Trim() |
Trims any graphics memory allocated by the graphics device on the app's behalf. |