Fonctionnalités de Direct3D 11.2

Les fonctionnalités suivantes ont été ajoutées dans Direct3D 11.2, qui est incluse dans Windows 8.1, Windows RT 8.1 et Windows Server 2012 R2.

Ressources en mosaïques

Direct3D 11.2 vous permet de créer des ressources en mosaïques qui peuvent être considérées comme de grandes ressources logiques qui utilisent de petites quantités de mémoire physique. Les ressources en mosaïque sont utiles (par exemple) avec le terrain dans les jeux et l’interface utilisateur d’application.

Les ressources en mosaïque sont créées en spécifiant l’indicateur D3D11_RESOURCE_MISC_TILED . Pour utiliser une ressource en mosaïque, utilisez ces API :

Pour plus d’informations sur les ressources en mosaïque, consultez Ressources en mosaïque.

Vérifier la prise en charge des ressources en mosaïques

Avant d’utiliser des ressources en mosaïques, vous devez déterminer si l’appareil prend en charge les ressources en mosaïques. Voici comment vous case activée pour la prise en charge des ressources en mosaïques :

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;
}

Prise en charge étendue des appareils WARP

Direct3D 11.2 étend la prise en charge des appareils WARP , que vous créez en transmettant D3D_DRIVER_TYPE_WARP dans le paramètre DriverType de D3D11CreateDevice. Le convertisseur logiciel WARP dans Direct3D 11.2 ajoute une prise en charge complète du niveau de fonctionnalité Direct3D 11_1, y compris les ressources en mosaïque, IDXGIDevice3::Trim, les surfaces BCn partagées, minblend et la carte par défaut. La prise en charge double dans les nuanceurs HLSL a également été activée, ainsi que la prise en charge de MSAA 16x.

Annoter des commandes graphiques

Direct3D 11.2 vous permet d’annoter des commandes graphiques avec ces API :

Liaison du nuanceur HLSL

Windows 8.1 ajoute une compilation et une liaison distinctes de nuanceurs HLSL, ce qui permet aux programmeurs graphiques de créer des fonctions HLSL précompilées, de les empaqueter dans des bibliothèques et de les lier dans des nuanceurs complets au moment de l’exécution. Il s’agit essentiellement d’un équivalent de la compilation, des bibliothèques et de la liaison distinctes C/C++, et il permet aux programmeurs de composer du code HLSL précompilé lorsque plus d’informations sont disponibles pour finaliser le calcul. Pour plus d’informations sur l’utilisation de la liaison de nuanceur, consultez Utilisation de la liaison de nuanceur.

Effectuez ces étapes pour créer un nuanceur final à l’aide d’une liaison dynamique au moment de l’exécution.

Pour créer et utiliser la liaison de nuanceur

  1. Créez un objet éditeur de liens ID3D11Linker , qui représente un contexte de liaison. Un seul contexte ne peut pas être utilisé pour produire plusieurs nuanceurs ; un contexte de liaison est utilisé pour produire un nuanceur unique, puis le contexte de liaison est jeté.
  2. Utilisez D3DLoadModule pour charger et définir des bibliothèques à partir de leurs objets blob de bibliothèque.
  3. Utilisez D3DLoadModule pour charger et définir un objet blob de nuanceur d’entrée, ou créez un nuanceur FLG.
  4. Utilisez ID3D11Module::CreateInstance pour créer des objets ID3D11ModuleInstance , puis appelez des fonctions sur ces objets pour lier des ressources à leurs emplacements finaux.
  5. Ajoutez les bibliothèques à l’éditeur de liens, puis appelez ID3D11Linker::Link pour produire du code d’octet de nuanceur final qui peut ensuite être chargé et utilisé dans le runtime comme un nuanceur entièrement précompilé et lié.

Graphe de liaison de fonction (FLG)

Windows 8.1 ajoute également le graphe de liaison de fonction (FLG). Vous pouvez utiliser FLG pour construire des nuanceurs qui se composent d’une séquence d’appels de fonction précompilés qui se transmettent des valeurs. Lorsque vous utilisez le FLG, il n’est pas nécessaire d’écrire HLSL et d’appeler le compilateur HLSL. Au lieu de cela, la structure du nuanceur est spécifiée par programme à l’aide d’appels d’API C++. Les nœuds FLG représentent les signatures d’entrée et de sortie et les appels de fonctions de bibliothèque précompilées. L’ordre d’inscription des nœuds d’appel de fonction définit la séquence d’appels. Le nœud de signature d’entrée doit être spécifié en premier, tandis que le nœud de signature de sortie doit être spécifié en dernier. Les bords FLG définissent la façon dont les valeurs sont transmises d’un nœud à un autre. Les types de données des valeurs passées doivent être les mêmes ; il n’y a pas de conversion de type implicite. Les règles de forme et de swizzling suivent le comportement HLSL et les valeurs ne peuvent être transmises vers l’avant que dans cette séquence. Pour plus d’informations sur l’API FLG, consultez ID3D11FunctionLinkingGraph.

Compilateur HLSL de boîte de réception

Le compilateur HLSL est désormais dans la boîte de réception des Windows 8.1 et versions ultérieures. Désormais, la plupart des API pour la programmation du nuanceur peuvent être utilisées dans les applications du Windows Store conçues pour Windows 8.1 et versions ultérieures. De nombreuses API pour la programmation du nuanceur n’ont pas pu être utilisées dans les applications du Windows Store qui ont été créées pour Windows 8 ; les pages de référence de ces API ont été marquées avec une note. Toutefois, certaines API de nuanceur (par exemple, D3DCompileFromFile) ne peuvent toujours être utilisées que pour développer des applications du Windows Store, et non dans les applications que vous envoyez au Windows Store ; les pages de référence de ces API sont toujours marquées avec une note.

Nouveautés de Direct3D 11