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
- compatibilidad extendida con dispositivos WARP
- anotación de comandos gráficos
- de vinculación del sombreador HLSL
- del compilador HLSL de la bandeja de entrada de
- temas relacionados
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 la 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:
- ID3D11Device2::GetResourceTiling
- ID3D11DeviceContext2::UpdateTiles
- ID3D11DeviceContext2::UpdateTileMappings
- ID3D11DeviceContext2::CopyTiles
- id3D11DeviceContext2::CopyTileMappings
- ID3D11DeviceContext2::ResizeTilePool
- ID3D11DeviceContext2::TiledResourceBarrier
- marca D3D11_DEBUG_FEATURE_DISABLE_TILED_RESOURCE_MAPPING_TRACKING_AND_VALIDATION con ID3D11Debug::SetFeatureMask
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 direct3D nivel de características 11_1, incluidos los recursos en mosaico , IDXGIDevice3::Trim, superficies BCn compartidas, minblend y map default. compatibilidad de doble en sombreadores HLSL también se ha habilitado junto con la compatibilidad con 16x MSAA.
Anotación de comandos de gráficos
Direct3D 11.2 le permite anotar comandos gráficos con estas API:
- ID3D11DeviceContext2::IsAnnotationEnabled
- ID3D11DeviceContext2::BeginEventInt
- ID3D11DeviceContext2::SetMarkerInt
- ID3D11DeviceContext2::EndEvent
Vinculación del sombreador HLSL
Windows 8.1 agrega una compilación y vinculación independientes de sombreadores HLSL, 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 de 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
- Cree un objeto ID3D11Linker enlazador, 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 produce el contexto de vinculación.
- Use D3DLoadModule para cargar y establecer bibliotecas desde sus blobs de biblioteca.
- Use D3DLoadModule para cargar y establecer un blob de sombreador de entrada o crear un sombreador FLG de .
- Use ID3D11Module::CreateInstance para crear objetos ID3D11ModuleInstance y, a continuación, llame a las funciones de estos objetos para volver a enlazar los recursos a sus ranuras finales.
- 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 grafo 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. El nodo de firma de entrada debe especificarse primero, 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 y los valores de HLSL solo se pueden pasar hacia delante en esta secuencia. Para obtener información sobre la API de FLG, consulta 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. No se pudieron usar muchas API para la programación de sombreador en aplicaciones de la Tienda Windows compiladas para Windows 8; las páginas de referencia de estas API se marcaron 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 siguen marcadas con una nota.
Temas relacionados