Características de Direct3D 11.2

Se ha agregado la siguiente funcionalidad en Direct3D 11.2, que se incluye con Windows 8.1, Windows RT 8.1 y Windows Server 2012 R2.

Recursos en mosaico

Direct3D 11.2 permite crear recursos en mosaico que se pueden considerar como recursos lógicos grandes que usan pequeñas cantidades de memoria física. Los recursos en mosaico son útiles (por ejemplo) con terreno en juegos y interfaz de usuario de la aplicación.

Los recursos en mosaico se crean especificando la marca D3D11_RESOURCE_MISC_TILED . Para trabajar con un recurso en mosaico, use esta API:

Para obtener más información sobre los recursos en mosaico, consulte Recursos en mosaico.

Comprobación de la compatibilidad con recursos en mosaico

Antes de usar recursos en mosaico, debe averiguar si el dispositivo admite recursos en mosaico. Aquí se muestra cómo comprobar la compatibilidad con los recursos en mosaico:

HRESULT hr = D3D11CreateDevice(
    nullptr,                    // Specify nullptr to use the default adapter.
    D3D_DRIVER_TYPE_HARDWARE,   // Create a device using the hardware graphics driver.
    0,                          // Should be 0 unless the driver is D3D_DRIVER_TYPE_SOFTWARE.
    creationFlags,              // Set debug and Direct2D compatibility flags.
    featureLevels,              // List of feature levels this app can support.
    ARRAYSIZE(featureLevels),   // Size of the list above.
    D3D11_SDK_VERSION,          // Always set this to D3D11_SDK_VERSION for Windows Store apps.
    &device,                    // Returns the Direct3D device created.
    &m_d3dFeatureLevel,         // Returns feature level of device created.
    &context                    // Returns the device immediate context.
    );

if (SUCCEEDED(hr))
{
    D3D11_FEATURE_DATA_D3D11_OPTIONS1 featureData;
    DX::ThrowIfFailed(
        device->CheckFeatureSupport(D3D11_FEATURE_D3D11_OPTIONS1, &featureData, sizeof(featureData))
        );

    m_tiledResourcesTier = featureData.TiledResourcesTier;
}

Compatibilidad ampliada con dispositivos WARP

Direct3D 11.2 amplía la compatibilidad con dispositivos WARP , que se crean pasando D3D_DRIVER_TYPE_WARP en el parámetro DriverType de D3D11CreateDevice. El representador de software WARP en Direct3D 11.2 agrega compatibilidad completa con el nivel de características de Direct3D 11_1, incluidos los recursos en mosaico, IDXGIDevice3::Trim, superficies de BCn compartidas, minblend y el valor predeterminado del mapa. También se ha habilitado la compatibilidad doble en sombreadores HLSL junto con la compatibilidad con 16 x MSAA.

Anotación de comandos de gráficos

Direct3D 11.2 permite anotar comandos gráficos con estas API:

Vinculación del sombreador HLSL

Windows 8.1 agrega una compilación y vinculación independientes de sombreadores HLSL, lo que permite a los programadores de gráficos crear funciones HLSL precompiladas, empaquetarlas en bibliotecas y vincularlas a sombreadores completos en tiempo de ejecución. Esto es básicamente un equivalente a la compilación, las bibliotecas y la vinculación independientes de C/C++, y permite a los programadores crear código HLSL precompilado cuando haya más información disponible para finalizar el cálculo. Para obtener más información sobre cómo usar la vinculación del sombreador, consulte Uso de la vinculación del sombreador.

Complete estos pasos para crear un sombreador final mediante la vinculación dinámica en tiempo de ejecución.

Para crear y usar la vinculación del sombreador

  1. Cree un objeto vinculador ID3D11Linker , que representa un contexto de vinculación. No se puede usar un único contexto para generar varios sombreadores; se usa un contexto de vinculación para generar un único sombreador y, a continuación, se descarta el contexto de vinculación.
  2. Use D3DLoadModule para cargar y establecer bibliotecas desde sus blobs de biblioteca.
  3. Use D3DLoadModule para cargar y establecer un blob de sombreador de entrada o crear un sombreador FLG.
  4. Use ID3D11Module::CreateInstance para crear objetos ID3D11ModuleInstance y, a continuación, llame a funciones en estos objetos para volver a enlazar recursos a sus ranuras finales.
  5. Agregue las bibliotecas al enlazador y, a continuación, llame a ID3D11Linker::Link para generar código de bytes de sombreador final que se pueda cargar y usar en el tiempo de ejecución como un sombreador totalmente precompilado y vinculado.

Gráfico de vinculación de funciones (FLG)

Windows 8.1 también agrega el gráfico de vinculación de funciones (FLG). Puede usar FLG para construir sombreadores que constan de una secuencia de invocaciones de función precompiladas que pasan valores entre sí. Cuando se usa FLG, no es necesario escribir HLSL e invocar el compilador HLSL. En su lugar, la estructura del sombreador se especifica mediante programación mediante llamadas API de C++. Los nodos FLG representan firmas de entrada y salida e invocaciones de funciones de biblioteca precompiladas. El orden de registro de los nodos de llamada de función define la secuencia de invocaciones. Primero se debe especificar el nodo de firma de entrada, mientras que el nodo de firma de salida debe especificarse en último lugar. Los bordes FLG definen cómo se pasan los valores de un nodo a otro. Los tipos de datos de valores pasados deben ser los mismos; no hay ninguna conversión de tipos implícita. Las reglas de forma y de giro siguen el comportamiento de HLSL y los valores solo se pueden pasar hacia delante en esta secuencia. Para obtener información sobre la API FLG, consulte ID3D11FunctionLinkingGraph.

Compilador HLSL de bandeja de entrada

El compilador HLSL ahora está en la bandeja de entrada en Windows 8.1 y versiones posteriores. Ahora, la mayoría de las API para la programación de sombreador se pueden usar en aplicaciones de la Tienda Windows compiladas para Windows 8.1 y versiones posteriores. Muchas API para la programación de sombreador no se podían usar en aplicaciones de la Tienda Windows compiladas para Windows 8; las páginas de referencia de estas API se marcaban con una nota. Pero algunas API de sombreador (por ejemplo, D3DCompileFromFile) solo se pueden usar para desarrollar aplicaciones de la Tienda Windows y no en aplicaciones que envíes a la Tienda Windows; las páginas de referencia de estas API se siguen marcando con una nota.

Novedades de Direct3D 11