IDirect3DSurface 介面

定義

這代表IDXGISurface,可用於交換IDXGISurface參考Windows 執行階段元件之間的互通性。

public interface class IDirect3DSurface : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(200581446, 5057, 18068, 190, 227, 122, 191, 21, 234, 245, 134)]
struct IDirect3DSurface : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(200581446, 5057, 18068, 190, 227, 122, 191, 21, 234, 245, 134)]
public interface IDirect3DSurface : System.IDisposable
Public Interface IDirect3DSurface
Implements IDisposable
屬性
實作

Windows 需求

裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)

範例

// 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 Direct3DSurface in
// the first segment of code, and obtaining a native DirectX surface 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 surface that is wrapped by a Direct3DSurface.

    winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DSurface d3dSurface /* = ... */;
    winrt::com_ptr<::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess> dxgiInterfaceAccess{
        d3dSurface.as<::Windows::Graphics::DirectX::Direct3D11::IDirect3DDxgiInterfaceAccess>()
    };
    winrt::com_ptr<::IDXGISurface> nativeSurface;
    winrt::check_hresult(dxgiInterfaceAccess->GetInterface(
        __uuidof(nativeSurface),
        nativeSurface.put_void()));

    // To create a new Direct3DSurface object wrapping a native DirectX surface.

    winrt::com_ptr<::IDXGISurface> nativeSurface2 /* = ... */;
    winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DSurface d3dSurface2{ nullptr };
    winrt::check_hresult(::CreateDirect3D11SurfaceFromDXGISurface(
        nativeSurface2.get(),
        reinterpret_cast<::IInspectable**>(winrt::put_abi(d3dSurface2))));
}
// 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 surface that is wrapped by a Direct3DSurface.

IDirect3DSurface^ d3dSurface = ...;  
ComPtr<IDXGISurface> nativeSurface;

HRESULT hr = GetDXGIInterface(d3dSurface, nativeSurface.GetAddressOf());

// To create a new Direct3DSurface object wrapping a native DirectX surface.

ComPtr<IDXGISurface> nativeSurface = ...;
IDirect3DSurface^ d3dSurface = CreateDirect3DSurface(nativeSurface.Get());

備註

若要在 IDirect3DSurface 和 IDXGISurface之間來回移動,請使用 CreateDirect3DSurfaceGetDXGIInterface (IDirect3DSurface^,DXGI_TYPE**) 函式。

屬性

Description

取得描述表面的 Direct3DSurfaceDescription

方法

Dispose()

執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。

適用於

另請參閱