Depuración de aplicaciones directX de forma remota

Puede usar Visual Studio y el SDK de Windows 8 para depurar aplicaciones de DirectX de forma remota. El SDK de Windows 8 proporciona un conjunto de componentes que admiten el desarrollo de DirectX y proporcionan comprobación de errores y validación de parámetros además de la depuración que proporciona Visual Studio. Estos componentes son D3D11_1SDKLayers.dll, D2D1Debug1.dll y Dxgidebug.dll.

Si desea depurar de forma remota en un equipo sin el SDK de Windows 8 instalado y desea esta funcionalidad de depuración adicional, debe instalar el paquete de depuración remota adecuado para la arquitectura en la que desea depurar. Los paquetes de Windows Installer en C:\Program Files (x86)\Windows Kits\8.0\Remote\<arch> instalan la compatibilidad adecuada.

Para habilitar las funcionalidades de depuración adicionales para las aplicaciones de Direct2D, use este código:

    D2D1_FACTORY_OPTIONS options;
    ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS));

#if defined(_DEBUG)
     // If the project is in a debug build, enable Direct2D debugging via SDK Layers.
    options.debugLevel = D2D1_DEBUG_LEVEL_INFORMATION;
#endif

    DX::ThrowIfFailed(
        D2D1CreateFactory(
            D2D1_FACTORY_TYPE_SINGLE_THREADED,
            __uuidof(ID2D1Factory1),
            &options,
            &m_d2dFactory
            )
        );         

Para habilitar las funcionalidades de depuración adicionales para las aplicaciones de Direct3D, use este código:

    // This flag supports surfaces with a different color channel ordering than the API default.
    // It is recommended usage, and is required for compatibility with Direct2D.
    UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
    ComPtr<IDXGIDevice> dxgiDevice;

#if defined(_DEBUG)
    // If the project is in a debug build, enable debugging via SDK Layers with this flag.
    creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
    DX::ThrowIfFailed(
        D3D11CreateDevice(
            nullptr,                    // specify null to use the default adapter
            D3D_DRIVER_TYPE_HARDWARE,
            0,                          // leave as 0 unless software device
            creationFlags,              // optionally set debug and Direct2D compatibility flags
            featureLevels,              // list of feature levels this app can support
            ARRAYSIZE(featureLevels),   // number of entries in above list
            D3D11_SDK_VERSION,          // always set this to D3D11_SDK_VERSION for modern
            &device,                    // returns the Direct3D device created
            &m_featureLevel,            // returns feature level of device created
            &context                    // returns the device immediate context
            )
        );

Para obtener más información sobre la depuración de aplicaciones de Direct2D, consulta Capa de depuración de Direct2D.

Para obtener más información sobre la depuración de aplicaciones de Direct3D, consulta Capa de depuración de Direct3D.