Utiliser des composants 3D dans votre jeu ou votre applicationUse 3D assets in your game or app

Cet article explique comment vous pouvez utiliser Visual Studio pour traiter des composants 3D et les inclure dans vos builds.This article describes how you can use Visual Studio to process 3D assets and include them in your builds.

Une fois que vous avez utilisé les outils de Visual Studio pour créer des composants 3D, l’étape suivante consiste à les utiliser dans votre application.After you use the tools in Visual Studio to create 3D assets, the next step is to use them in your app. Mais avant de pouvoir les utiliser, vous devez convertir vos ressources dans un format compatible avec DirectX.But, before you can use them, your assets have to be transformed into a format that DirectX can understand. Pour vous aider à transformer vos composants, Visual Studio fournit des personnalisations de build pour chaque type de composant qu’il peut produire.To help you transform your assets, Visual Studio provides build customizations for each kind of asset that it can produce. Pour inclure les ressources dans votre build, il vous suffit de configurer votre projet pour utiliser les personnalisations de build, ajouter les ressources à votre projet, puis configurer les ressources pour utiliser la personnalisation de build appropriée.To include the assets in your build, all you have to do is configure your project to use the build customizations, add the assets to your project, and configure the assets to use the correct build customization. Ensuite, vous pouvez charger les ressources dans votre application et les utiliser en créant et complétant des ressources DirectX comme dans n'importe quelle autre application DirectX.After that, you can load the assets into your app and use them by creating and filling DirectX resources just like you would in any other DirectX app.

Configurer votre projetConfigure your project

Avant de déployer vos composants 3D dans le cadre de votre build, Visual Studio doit savoir quels types de composants vous voulez déployer.Before you can deploy your 3D assets as part of your build, Visual Studio has to know about the kinds of assets that you want to deploy. Visual Studio connaît déjà de nombreux types de fichiers courants, mais comme seuls certains types d’applications utilisent des composants 3D, il ne fait pas l’hypothèse qu’un projet va générer ces types de fichiers.Visual Studio already knows about many common file types, but because only certain kinds of apps use 3D assets, Visual Studio doesn't assume that a project will build these kinds of files. Vous pouvez indiquer à Visual Studio que votre application utilise ces types de composants avec des personnalisations de build, qui sont des fichiers fournis pour chaque type de composant, indiquant à Visual Studio comment traiter pratiquement les différents types de fichiers.You can tell Visual Studio that your app uses these kinds of assets by using the build customizations—files that tell Visual Studio how to process different types of files in a useful way—that are provided for each asset type. Comme ces personnalisations sont appliquées projet par projet, tout ce que vous avez à faire est d'ajouter les personnalisations appropriées à votre projet.Because these customizations are applied on a per-project basis, all you have to do is add the appropriate customizations to your project.

Pour ajouter les personnalisations de la build à votre projetTo add the build customizations to your project

  1. Dans l’Explorateur de solutions, ouvrez le menu contextuel du projet et choisissez Dépendances de build > Personnalisations de la build.In Solution Explorer, open the shortcut menu for the project, and then choose Build Dependencies > Build Customizations. La boîte de dialogue Fichiers de personnalisation de la build Visual C++ apparaît.The Visual C++ Build Customizations Files dialog box appears.

  2. Sous Fichiers de personnalisation de la build disponibles, cochez les cases qui correspondent aux types de ressources que vous voulez utiliser dans votre projet, comme décrit dans le tableau suivant :Under Available Build Customization Files, select the check boxes that correspond to the asset types that you want to use in your project, as described in the following table:

    Type de ressourceAsset type Nom de personnalisation de la buildBuild customization Name
    Textures et imagesTextures and images ImageContentTask(.targets, .props)ImageContentTask(.targets, .props)
    Modèles 3D3D Models MeshContentTask(.targets, .props)MeshContentTask(.targets, .props)
    NuanceursShaders ShaderGraphContentTask(.targets, .props)ShaderGraphContentTask(.targets, .props)
  3. Sélectionnez le bouton OK .Choose the OK button.

Inclure des composants dans votre buildInclude assets in your build

Maintenant que votre projet sait quels types de composants 3D vous voulez utiliser, l’étape suivante consiste à lui indiquer les fichiers qui sont des composants 3D et à quels types de composants ils correspondent.Now that your project knows about the different kinds of 3D assets that you want to use, the next step is to tell it which files are 3D assets, and which kinds of assets they are.

Pour ajouter une ressource à votre buildTo add an asset to your build

  1. Dans l’Explorateur de solutions, dans votre projet, ouvrez le menu contextuel d’une ressource, puis choisissez Propriétés.In Solution Explorer, in your project, open the shortcut menu of an asset, and then choose Properties. La boîte de dialogue Page de propriétés de la ressource apparaît.The asset's Property Page dialog box appears.

  2. Vérifiez que les valeurs définies des propriétés Configuration et Plateforme sont celles auxquelles vous voulez que vos modifications s’appliquent.Make sure that the Configuration and Platform properties are set to the values to which you want your changes to apply.

  3. Sous Propriétés de configuration, choisissez Général puis, dans la grille des propriétés, sous Général, affectez à la propriété Type d’élément le type d’élément de pipeline de contenu approprié.Under Configuration Properties, choose General, and then in the property grid, under General, set the Item Type property to the appropriate content pipeline item type. Par exemple, pour un fichier image ou de texture, choisissez le pipeline de contenu d’image.For example, for an image or texture file, choose Image Content Pipeline.

    Important

    Par défaut, Visual Studio considère que de nombreux types de fichiers image doivent être classés dans la catégorie des types d’éléments Image, qui est intégrée à Visual Studio.By default, Visual Studio assumes that many kinds of image files should be categorized by using the Image item type that's built into Visual Studio. Ainsi, vous devez modifier la propriété Type d’élément de chaque image qui doit être traitée par le pipeline de contenu d’image.Therefore, you have to change the Item Type property of each image that you want to be processed by the image content pipeline. Les autres types de fichiers sources du pipeline de contenu pour les modèles 3D et les graphismes des nuanceurs visuels ont pour valeur par défaut le Type d’élément approprié.Other types of content pipeline source files for 3D models and visual shader graphics default to the correct Item Type.

  4. Sélectionnez le bouton OK .Choose the OK button.

Voici les trois types d’éléments de pipeline de contenu et leurs types de fichiers sources et de sortie associés.Following are the three content pipeline item types and their associated source and output file types.

Type d'élémentItem Type Types de fichiers sourcesSource file types Format des fichiers de sortieOutput file format
Pipeline de contenu d’imageImage Content Pipeline Portable Network Graphics (.png)Portable Network Graphics (.png)

JPEG (.jpg, .jpeg, .jpe, .jfif)JPEG (.jpg, .jpeg, .jpe, .jfif)

Direct Draw Surface (.dds)Direct Draw Surface (.dds)

Graphics Interchange Format (.gif)Graphics Interchange Format (.gif)

Bitmap (.bmp, .dib)Bitmap (.bmp, .dib)

Tagged Image File Format (.tif, .tiff)Tagged Image File Format (.tif, .tiff)

Targa (.tga)Targa (.tga)
DirectDraw Surface (.dds)DirectDraw Surface (.dds)
Pipeline de contenu de maillageMesh Content Pipeline Fichier d’échange AutoDesk FBX (.fbx)AutoDesk FBX Interchange File (.fbx)

Fichier DAE Collada (.dae)Collada DAE File (.dae)

Fichier Wavefront OBJ (.obj)Wavefront OBJ File (.obj)
Fichier de maillage 3D (.cmo)3D mesh file (.cmo)
Pipeline de contenu de nuanceurShader Content Pipeline Graphe de nuanceur visuel (.dgsl)Visual Shader Graph (.dgsl) Sortie de nuanceur compilé (.cso)Compiled Shader Output (.cso)

Configurer les propriétés du pipeline de contenu des composantsConfigure asset content pipeline properties

Vous pouvez définir les propriétés du pipeline de contenu de chaque fichier de ressources afin qu'il soit généré de manière spécifique.You can set the content pipeline properties of each asset file so that it will be built in a specific way.

Pour configurer les propriétés du pipeline de contenuTo configure content pipeline properties

  1. Dans l’Explorateur de solutions, dans votre projet, ouvrez le menu contextuel du fichier de ressources, puis choisissez Propriétés.In Solution Explorer, in your project, open the shortcut menu for the asset file, and then choose Properties. La boîte de dialogue Page de propriétés de la ressource apparaît.The asset's Property Page dialog box appears.

  2. Vérifiez que les valeurs définies des propriétés Configuration et Plateforme sont celles auxquelles vous voulez que vos modifications s’appliquent.Make sure that the Configuration and Platform properties are set to the values that you want your changes to apply to.

  3. Sous Propriétés de configuration, choisissez le nœud de pipeline de contenu (par exemple, Pipeline de contenu d’image pour les ressources de texture et d’image) puis, dans la grille des propriétés, affectez aux propriétés les valeurs appropriées.Under Configuration Properties, choose the content pipeline node—for example, Image Content Pipeline for texture and image assets—and then in the property grid, set the properties to the appropriate values. Par exemple, pour générer des mipmaps pour une ressource de texture au moment de la génération, affectez à la propriété Générer des mips la valeur Oui.For example, to generate mipmaps for a texture asset at build time, set the Generate Mips property to Yes.

  4. Sélectionnez le bouton OK .Choose the OK button.

Configuration du pipeline de contenu d'imageImage content pipeline configuration

Quand vous utilisez l'outil de pipeline de contenu d'image pour générer une ressource de texture, vous pouvez compresser la texture de différentes manières, indiquer si les niveaux MIP doivent être générés au moment de la génération, puis modifier le nom du fichier de sortie.When you use the image content pipeline tool to build a texture asset, you can compress the texture in various ways, indicate whether MIP levels should be generated at build time, and change the name of the output file.

PropertyProperty DescriptionDescription
CompresserCompress Spécifie le type de compression utilisé pour le fichier de sortie.Specifies the compression type that's used for the output file.

Les options disponibles sont les suivantes :The available options are:

- Aucune compression- No Compression
- Compression BC1_UNORM- BC1_UNORM compression
- Compression BC1_UNORM_SRGB- BC1_UNORM_SRGB compression
- Compression BC2_UNORM- BC2_UNORM compression
- Compression BC2_UNORM_SRGB- BC2_UNORM_SRGB compression
- Compression BC3_UNORM- BC3_UNORM compression
- Compression BC3_UNORM_SRGB- BC3_UNORM_SRGB compression
- Compression BC4_UNORM- BC4_UNORM compression
- Compression BC4_SNORM- BC4_SNORM compression
- Compression BC5_UNORM- BC5_UNORM compression
- Compression BC5_SNORM- BC5_SNORM compression
- Compression BC6H_UF16- BC6H_UF16 compression
- Compression BC6H_SF16- BC6H_SF16 compression
- Compression BC7_UNORM- BC7_UNORM compression
- Compression BC7_UNORM_SRGB- BC7_UNORM_SRGB compression

Pour plus d’informations sur les formats de compression pris en charge dans les différentes versions de DirectX, consultez Guide de programmation pour DXGI.For information about which compression formats are supported in different versions of DirectX, see Programming Guide for DXGI.
Convertir dans un format alpha prémultipliéConvert to pre-multiplied alpha format Oui pour convertir l’image dans un format alpha prémultiplié dans le fichier de sortie ; sinon, Non.Yes to convert the image to pre-multiplied alpha format in the output file; otherwise, No. Seul le fichier de sortie est modifié ; l'image source est inchangée.Only the output file is changed, the source image is unchanged.
Générer des mipsGenerate Mips Oui pour générer une chaîne MIP complète au moment de la génération et l’inclure dans le fichier de sortie ; sinon, Non.Yes to generate a full MIP chain at build time and include it in the output file; otherwise, No. Si la valeur Non est sélectionnée et que le fichier source contient déjà une chaîne mipmap, le fichier de sortie a une chaîne MIP ; sinon, le fichier de sortie n’a pas de chaîne MIP.If No, and the source file already contains a mipmap chain, then the output file will have a MIP chain; otherwise, the output file will have no MIP chain.
Sortie de contenuContent Output Spécifie le nom du fichier de sortie.Specifies the name of the output file. Important : La modification de l’extension du nom de fichier de sortie n’a aucun effet sur son format.Important: Changing the file name extension of the output file has no effect on its file format.

Configuration du pipeline de contenu de maillageMesh content pipeline configuration

Quand vous utilisez l'outil de pipeline de contenu de maillage pour générer une ressource de maillage, vous pouvez modifier le nom du fichier de sortie.When you use the mesh content pipeline tool to build a mesh asset, you can change the name of the output file.

PropertyProperty DescriptionDescription
Sortie de contenuContent Output Spécifie le nom du fichier de sortie.Specifies the name of the output file. Important : La modification de l’extension du nom de fichier de sortie n’a aucun effet sur son format.Important: Changing the file name extension of the output file has no effect on its file format.

Configuration du pipeline de contenu de nuanceurShader content pipeline configuration

Quand vous utilisez l'outil de pipeline de contenu de nuanceur pour générer une ressource de nuanceur, vous pouvez modifier le nom du fichier de sortie.When you use the shader content pipeline tool to build a shader asset, you can change the name of the output file.

PropertyProperty DescriptionDescription
Sortie de contenuContent Output Spécifie le nom du fichier de sortie.Specifies the name of the output file. Important : La modification de l’extension du nom de fichier de sortie n’a aucun effet sur son format.Important: Changing the file name extension of the output file has no effect on its file format.

Charger et utiliser des composants 3D lors de l’exécutionLoad and use 3D assets at run time

Utiliser des textures et des imagesUse textures and images

Direct3D propose des fonctions de création de ressources de texture.Direct3D provides functions for creating texture resources. Dans Direct3D 11, la bibliothèque d'utilitaires D3DX11 fournit des fonctions supplémentaires pour créer des ressources de texture et des affichages de ressources directement à partir de fichiers image.In Direct3D 11, the D3DX11 utility library provides additional functions for creating texture resources and resource views directly from image files. Pour plus d’informations sur la création d’une ressource de texture dans Direct3D 11, consultez Textures.For more information about how to create a texture resource in Direct3D 11, see Textures. Pour plus d’informations sur la façon d’utiliser la bibliothèque D3DX11 pour créer une ressource de texture ou un affichage des ressources à partir d’un fichier image, consultez Guide pratique pour initialiser une texture à partir d’un fichier.For more information about how to use the D3DX11 library to create a texture resource or resource view from an image file, see How to: Initialize a texture from a file.

Utiliser des modèles 3DUse 3D models

Direct3D 11 ne fournit pas de fonctions permettant de créer des ressources à partir de modèles 3D.Direct3D 11 does not provide functions for creating resources from 3D models. Au lieu de cela, vous devez écrire du code qui lise le fichier de modèle 3D et crée des sommets et des mémoires tampons d’index, qui représentent le modèle 3D et toutes les ressources nécessaires au modèle (par exemple, des textures ou des nuanceurs).Instead, you have to write code that reads the 3D model file and creates vertex and index buffers that represent the 3D model and any resources that the model requires—for example, textures or shaders.

Utiliser des nuanceursUse shaders

Direct3D propose des fonctions permettant de créer des ressources de nuanceur et de les lier au pipeline graphique programmable.Direct3D provides functions for creating shader resources and binding them to the programmable graphics pipeline. Pour plus d’informations sur la façon de créer une ressource de nuanceur dans Direct3D et de la lier au pipeline, consultez Guide de programmation pour HLSL.For more information about how to create a shader resource in Direct3D and bind it to the pipeline, see Programming guide for HLSL.

Dans le pipeline graphique programmable, chaque étape du pipeline doit fournir à l'étape suivante du pipeline un résultat mis en forme de manière intelligible.In the programmable graphics pipeline, each stage of the pipeline must give the next stage of the pipeline a result that's formatted in a way that it can understand. Sachant que le concepteur Shader ne peut créer que des nuanceurs de pixels, il appartient à votre application de vérifier que les données qu'elle reçoit sont au format attendu.Because the Shader Designer can only create pixel shaders, this means that it's up to your app to ensure that the data that it receives is in the format that it expects. Plusieurs étapes de nuanceur programmables se produisent avant le nuanceur de pixels et effectuent des transformations géométriques (le nuanceur de sommets, le nuanceur Hull Shader, le nuanceur de domaine et le nuanceur de géométrie).Several programmable shader stages occur before the pixel shader and perform geometric transformations—the vertex shader, the hull shader, the domain shader, and the geometry shader. L'étape de pavage non programmable se produit également avant le nuanceur de pixels.The non-programmable tessellation stage also occurs before the pixel shader. Quelle que soit l'étape qui précède directement le nuanceur de pixels, son résultat doit se présenter au format suivant :No matter which of these stages directly precedes the pixel shader, it must give its result in this format:

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
    float4 diffuse : COLOR;
    float2 uv : TEXCOORD0;
    float3 worldNorm : TEXCOORD1;
    float3 worldPos : TEXCOORD2;
    float3 toEye : TEXCOORD3;
    float4 tangent : TEXCOORD4;
    float3 normal : TEXCOORD5;
};

Selon les nœuds du concepteur Shader que vous utilisez dans votre nuanceur, vous devrez peut-être aussi fournir des informations supplémentaires formatées en fonction de ces définitions :Depending on the Shader Designer nodes that you use in your shader, you might also have to provide additional data in the format according to these definitions:

Texture2D Texture1 : register( t0 );
Texture2D Texture2 : register( t1 );
Texture2D Texture3 : register( t2 );
Texture2D Texture4 : register( t3 );
Texture2D Texture5 : register( t4 );
Texture2D Texture6 : register( t5 );
Texture2D Texture7 : register( t6 );
Texture2D Texture8 : register( t7 );

TextureCube CubeTexture1 : register( t8 );
TextureCube CubeTexture2 : register( t9 );
TextureCube CubeTexture3 : register( t10 );
TextureCube CubeTexture4 : register( t11 );
TextureCube CubeTexture5 : register( t12 );
TextureCube CubeTexture6 : register( t13 );
TextureCube CubeTexture7 : register( t14 );
TextureCube CubeTexture8 : register( t15 );

SamplerState TexSampler : register( s0 );

cbuffer MaterialVars : register (b0)
{
    float4 MaterialAmbient;
    float4 MaterialDiffuse;
    float4 MaterialSpecular;
    float4 MaterialEmissive;
    float MaterialSpecularPower;
};

cbuffer LightVars : register (b1)
{
    float4 AmbientLight;
    float4 LightColor[4];
    float4 LightAttenuation[4];
    float3 LightDirection[4];
    float LightSpecularIntensity[4];
    uint IsPointLight[4];
    uint ActiveLights;
}

cbuffer ObjectVars : register(b2)
{
    float4x4 LocalToWorld4x4;
    float4x4 LocalToProjected4x4;
    float4x4 WorldToLocal4x4;
    float4x4 WorldToView4x4;
    float4x4 UVTransform4x4;
    float3 EyePosition;
};

cbuffer MiscVars : register(b3)
{
    float ViewportWidth;
    float ViewportHeight;
    float Time;
};
TitreTitle DescriptionDescription
Guide pratique pour exporter une texture qui contient des mipmapsHow to: Export a texture that contains mipmaps Explique comment utiliser le pipeline de contenu d'image pour exporter une texture qui contient des mipmaps précalculés.Describes how to use the Image Content Pipeline to export a texture that contains precomputed mipmaps.
Guide pratique pour exporter une texture qui contient des valeurs alpha prémultipliéesHow to: Export a texture that has premultiplied alpha Explique comment utiliser le pipeline de contenu d'image pour exporter une texture qui contient des valeurs alpha prémultipliées.Describes how to use the Image Content Pipeline to export a texture that contains premultiplied alpha values.
Guide pratique pour exporter une texture à utiliser avec des applications Direct2D ou JavaScriptHow to: Export a texture for use with Direct2D or Javascipt apps Explique comment utiliser le pipeline de contenu d'image pour exporter une texture utilisable dans une application Direct2D ou Javascript.Describes how to use the Image Content Pipeline to export a texture that can be used in a Direct2D or JavaScript app.
Utilisation de composants 3D pour les jeux et les applicationsWorking with 3D assets for games and apps Décrit les outils d’édition fournis par Visual Studio pour créer et manipuler des composants 3D, qui comprennent les textures, les images, les modèles 3D et les nuanceurs.Describes the editing tools that Visual Studio provides for creating and manipulating 3D assets, which include textures and images, 3D models, and shaders.
Guide pratique pour exporter un nuanceurHow to: Export a shader Explique comment exporter un nuanceur à partir du concepteur Shader.Describes how to export a shader from the Shader Designer.