Applications Windows
Réduire la table des matières
Développer la table des matières
Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

Utilisation de ressources 3D dans vos jeux et applications

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Cet article explique comment vous pouvez utiliser Visual Studio pour traiter les ressources 3D et les inclure dans vos builds.

Une fois que vous avez utilisé les outils de Visual Studio pour créer des ressources 3D, l'étape suivante consiste à les utiliser dans votre application. Mais avant de pouvoir les utiliser, vos ressources doivent être converties dans un format compatible avec DirectX. Pour vous aider à transformer vos ressources, Visual Studio fournit des personnalisations de build pour chaque type de ressource qu'il peut générer. 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. 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.

Avant de déployer vos ressources 3D dans le cadre de votre build, Visual Studio doit savoir quels types de ressources vous voulez déployer. Visual Studio connaît déjà de nombreux types de fichiers communs, mais comme seuls certains types d'applications utilisent des ressources 3D, Visual Studio ne considère pas qu'un projet va générer ces types de fichiers. Vous pouvez informer Visual Studio que votre application utilise ces types de ressources à l'aide des fichiers de personnalisation de la build fournis pour chaque type de ressource, qui indiquent à Visual Studio comment traiter différents types de fichiers de manière utile. Comme ces personnalisations sont appliquées projet par projet, tout ce que vous avez à faire est d'ajouter les personnalisations appropriées à votre projet.

Pour ajouter les personnalisations de la build à votre projet

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du projet et choisissez Dépendances de build, Personnalisations de la build. La boîte de dialogue Fichiers de personnalisation de la build Visual C++ s'affiche.

  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 ce tableau :

    Type de ressourceNom de personnalisation de la build
    Textures et imagesImageContentTask(.targets, .props)
    Modèles 3DMeshContentTask(.targets, .props)
    NuanceursShaderGraphContentTask(.targets, .props)
  3. Sélectionnez le bouton OK.

Maintenant que votre projet sait quels types de ressources 3D vous voulez utiliser, l'étape suivante consiste à lui indiquer les fichiers qui sont des ressources 3D et les types de ressources auxquels elles correspondent.

Pour ajouter une ressource à votre build

  1. Dans l'Explorateur de solutions, dans votre projet, ouvrez le menu contextuel d'une ressource, puis choisissez Propriétés. La boîte de dialogue Pages de propriétés de la ressource s'affiche.

  2. Assurez-vous que les valeurs définies des propriétés Configuration et Plateforme sont celles auxquelles vous voulez que vos modifications s'appliquent.

  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é. Par exemple, pour un fichier image ou de texture, choisissez le pipeline de contenu d'image.

    System_CAPS_ICON_important.jpg Important

    Par défaut, Visual Studio suppose que de nombreux types de fichiers image doivent être classés à l'aide du type d'élément Image intégré à 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. Les autres types de fichiers sources de pipeline de contenu pour les modèles 3D et les graphiques nuanceurs visuels ont pour valeur par défaut le Type d'élément approprié.

  4. Sélectionnez le bouton OK.

Voici les trois types d'éléments de pipeline de contenu et leurs types de fichiers sources et de sortie associés.

Type d'élémentTypes de fichiers sourcesFormat des fichiers de sortie
Pipeline de contenu d'imagePortable Network Graphics (.png)

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

Direct Draw Surface (.dds)

Graphics Interchange Format (.gif)

Bitmap (.bmp, .dib)

Tagged Image File Format (.tif, .tiff)

Targa (.tga)
DirectDraw Surface (.dds)
Pipeline de contenu de maillageFichier d'échange AutoDesk FBX (.fbx)

Fichier DAE Collada (.dae)

Fichier Wavefront OBJ (.obj)
Fichier de maillage 3D (.cmo)
Pipeline de contenu de nuanceurGraphe de nuanceur visuel (.dgsl)Sortie de nuanceur compilé (.cso)

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.

Pour configurer les propriétés du pipeline de contenu

  1. Dans l'Explorateur de solutions, dans votre projet, ouvrez le menu contextuel du fichier de ressources, puis choisissez Propriétés. La boîte de dialogue Pages de propriétés de la ressource s'affiche.

  2. Assurez-vous que les valeurs définies des propriétés Configuration et Plateforme sont celles auxquelles vous voulez que vos modifications s'appliquent.

  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. 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.

  4. Sélectionnez le bouton OK.

Configuration du pipeline de contenu d'image

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.

PropriétéDescription
CompresserSpécifie le type de compression utilisé pour le fichier de sortie.

Les options disponibles sont les suivantes :

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

Pour plus d'informations sur les formats de compression pris en charge dans les différentes versions de DirectX, voir Guide de programmation pour DXGI.
Convertir dans un format alpha prémultipliéOui pour convertir l'image dans un format alpha prémultiplié dans le fichier de sortie ; sinon, Non. Seul le fichier de sortie est modifié ; l'image source est inchangée.
Générer des mipsOui 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. 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.
Sortie de contenuSpécifie le nom du fichier de sortie. Important: La modification de l'extension de nom de fichier du fichier de sortie n'a aucun effet sur son format.

Configuration du pipeline de contenu de maillage

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.

PropriétéDescription
Sortie de contenuSpécifie le nom du fichier de sortie. Important: La modification de l'extension de nom de fichier du fichier de sortie n'a aucun effet sur son format.

Configuration du pipeline de contenu de nuanceur

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.

PropriétéDescription
Sortie de contenuSpécifie le nom du fichier de sortie. Important: La modification de l'extension de nom de fichier du fichier de sortie n'a aucun effet sur son format.

Utilisation de textures et d'images

Direct3D propose des fonctions de création de ressources de texture. 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. Pour plus d'informations sur la création d'une ressource de texture dans Direct3D 11, voir Textures. Pour plus d'informations sur l'utilisation de la bibliothèque D3DX11 pour créer une ressource de texture ou un affichage de ressource à partir d'un fichier image, voir Procédure : initialisation d'une texture à partir d'un fichier.

Utilisation de modèles 3D

Direct3D 11 ne propose pas de fonctions permettant de créer des ressources à partir de modèles 3D. À la place, vous devez écrire du code qui lise le fichier de modèle 3D et crée des mémoires tampons de vertex et 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).

Utilisation de nuanceurs

Direct3D propose des fonctions permettant de créer des ressources de nuanceur et de les lier au pipeline graphique programmable. Pour plus d'informations sur la façon de créer une ressource de nuanceur dans Direct3D et de la lier au pipeline, voir Guide de programmation pour 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. 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. 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). L'étape de pavage non programmable se produit également avant le nuanceur de pixels. Quelle que soit l'étape qui précède directement le nuanceur de pixels, son résultat doit se présenter au format suivant :

  
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 :

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

TitreDescription
Comment : exporter une texture qui contient des mipmapsExplique comment utiliser le pipeline de contenu d'image pour exporter une texture qui contient des mipmaps précalculés.
Comment : exporter une texture qui possède des valeurs alpha prémultipliéesExplique comment utiliser le pipeline de contenu d'image pour exporter une texture qui contient des valeurs alpha prémultipliées.
Comment : exporter une texture pour l'utiliser avec des applications Javascript ou Direct2DExplique comment utiliser le pipeline de contenu d'image pour exporter une texture utilisable dans une application Direct2D ou Javascript.
Utilisation de ressources 3D pour les jeux et les applicationsDécrit les outils d'édition fournis par Visual Studio en vue de créer et manipuler des ressources 3D, à savoir, textures, images, modèles 3D et nuanceurs.
Procédure : exporter un nuanceurExplique comment exporter un nuanceur à partir du concepteur Shader.
© 2018 Microsoft