Usar activos 3D en un juego o una aplicación

En este artículo se describe cómo puede utilizar Visual Studio para procesar activos 3D e incluirlos en sus compilaciones.

Después de usar las herramientas de Visual Studio para crear activos 3D, el paso siguiente es utilizarlos en la aplicación.Pero antes de poder usarlos, los activos tienen que transformarse en un formato que DirectX pueda entender.Para ayudarle a transformar los activos, Visual Studio proporciona personalizaciones de compilación para cada clase de activo que puede generar.Para incluir los activos en la compilación, lo único que debe hacer es configurar el proyecto para que use personalizaciones de compilación, agregar los activos al proyecto y configurar los activos para que usen la personalización de compilación correcta.Después, puede cargar los activos en la aplicación y usarlos creando y rellenando los recursos de DirectX igual que en cualquier otra aplicación de DirectX.

Configurar el proyecto

Para implementar los activos 3D como parte de su compilación, Visual Studio tiene que conocer las clases de activos que desee implementar.Visual Studio ya conoce muchos tipos de archivo comunes, pero debido a que solo ciertos tipos de aplicaciones utilizan activos 3D, Visual Studio no supone que un proyecto compilará estos tipos de archivos.Puede indicar a Visual Studio que la aplicación utiliza estos tipos de activos mediante las personalizaciones de compilación (archivos que indican a Visual Studio cómo procesar los distintos tipos de archivos de una manera útil) proporcionadas para cada tipo de activo.Dado que estas personalizaciones se aplican a por proyecto, todo lo que tiene que hacer es agregar las personalizaciones adecuadas al proyecto.

Para agregar las personalizaciones de compilación al proyecto

  1. En Explorador de soluciones, abra el menú contextual del proyecto y, a continuación Personalizaciones de compilación.Aparecerá el cuadro de diálogo Archivos de personalizaciones de compilación de Visual C++.

  2. Solo tiene que agregar estas personalizaciones de compilación a Visual Studio una vez; si se ya las ha agregado, puede omitir este paso.

    Elija el botón Buscar existente y, después, navegue al directorio de instalación de Visual Studio\Common7\IDE\Microsoft\VSGraphics\, que contiene las tres personalizaciones compiladas que admiten la compilación de activos 3D.Seleccione un archivo de personalizaciones de compilación, por ejemplo, ImageContentTask.targets y, a continuación, elija el botón Abrir.Cuando aparezca el mensaje que le pregunta si desea agregar el directorio a la ruta de búsqueda de personalizaciones de compilación, elija el botón .Esto hace que estén disponibles las tres personalizaciones de compilación.

  3. Elija el botón Actualizar lista para actualizar el control de vista de la cuadrícula Archivos de personalizaciones de compilación disponibles.

  4. En el control de vista de la cuadrícula de Archivos de personalizaciones de compilación disponibles, active las casillas correspondientes a los tipos de activo tipos que desea usar en el proyecto, como se describe en esta tabla:

    Tipo de activo

    Compilar nombre de personalización

    Texturas e imágenes

    ImageContentTask(.targets, .props)

    Modelos 3D

    MeshContentTask(.targets, .props)

    Sombreadores

    ShaderGraphContentTask (.targets, .props)

  5. elija el botón de Aceptar .

Incluir activos en la compilación

Ahora que el proyecto sabe cuáles son los diferentes tipos de activos 3D que desea usar, el paso siguiente es indicarle qué archivos son activos 3D y qué clases de activos son.

Para agregar un activo a la compilación

  1. En el Explorador de soluciones, en el proyecto, abra el menú contextual de un activo y, a continuación elija Propiedades.Aparece el cuadro de diálogo Página de propiedades del activo.

  2. Asegúrese de que las propiedades Configuración y Plataforma se establecen en los que desea que se apliquen los valores.

  3. En Propiedades de configuración, elija General y, en la cuadrícula de propiedades, en General, establezca la propiedad Tipo de elemento en el tipo de elemento de canalización de contenido adecuado.Por ejemplo, para un archivo de imagen o de textura, elija Canalización de contenido de la imagen.

    Nota importanteImportante

    De forma predeterminada, Visual Studio supone que muchas clases de archivos de imagen se deben categorizar mediante el tipo de elemento Imagen que está integrado en Visual Studio.Por consiguiente, debe cambiar la propiedad Tipo de elemento de cada imagen que desea que procese la canalización de contenido de la imagen.Otros tipos de archivos de código fuente de canalización de contenido para los modelos 3D y los gráficos del sombreador toman el valor predeterminado del Tipo de elemento correcto.

  4. elija el botón de Aceptar .

Estos son los tres tipos de elemento de contenido de la canalización y los tipos de archivo de código fuente y de salida asociados.

Tipo de elemento

Tipos de archivo de recursos

Formato del archivo de salida

Canalización de contenido de la imagen

Portable Network Graphics (.png)

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

Superficie de DirectDraw (.dds)

Graphics Interchange Format (formato de intercambio de gráficos) (.gif)

Mapa de bits (.bmp, .dib)

Formato de archivo de imagen etiquetado (.tif, .tiff)

Targa (.tga)

Superficie de DirectDraw (.dds)

Canalización del contenido de mallas

Archivo de intercambio de Autodesk (.fbx)

Archivo de Collada DAE (.dae)

Archivo OBJ de Wavefront (.obj)

Archivo 3D de malla (.cmo)

Canalización de contenido del sombreador

Gráfico de sombreador visual (.dgsl)

Resultado del sombreador compilado (.cso)

Configurar las propiedades de la canalización del contenido de activos

Puede establecer las propiedades de la canalización de contenido de cada archivo de activo para que se compile de una manera determinada.

Para configurar las propiedades de la canalización de contenido

  1. En el Explorador de soluciones, en el proyecto, abra el menú contextual del archivo de activos y, a continuación elija Propiedades.Aparece el cuadro de diálogo Página de propiedades del activo.

  2. Asegúrese de que las propiedades Configuración y Plataforma se establecen en los que desea que se apliquen los valores.

  3. En Propiedades de configuración, elija el nodo de canalización de contenido, por ejemplo, Canalización de contenido de la imagen para los activos de textura e imagen y, a continuación, en la cuadrícula de propiedades, establezca las propiedades en los valores adecuados.Por ejemplo, para generar los mapas MIP para un activo de textura en tiempo de compilación, establezca la propiedad de Generar Mips en .

  4. elija el botón de Aceptar .

Hh972446.collapse_all(es-es,VS.110).gifConfiguración de la canalización del contenido de la imagen

Cuando utilice la herramienta de canalización de contenido de la imagen para compilar un activo de textura, puede comprimir la textura de varias maneras, indicar si los niveles MIP se deben generar en tiempo de compilación y cambiar el nombre del archivo de salida.

Propiedad

Descripción

Comprimir

Especifica el tipo de compresión que se utiliza para el archivo de salida.

Las opciones disponibles son:

  • Sin compresión

  • Compresión BC1_UNORM

  • Compresión BC1_UNORM_SRGB

  • Compresión BC2_UNORM

  • Compresión BC2_UNORM_SRGB

  • Compresión BC3_UNORM

  • Compresión BC3_UNORM_SRGB

  • Compresión BC4_UNORM

  • Compresión BC4_SNORM

  • Compresión BC5_UNORM

  • Compresión BC5_SNORM

  • Compresión BC6H_UF16

  • Compresión BC6H_SF16

  • Compresión BC7_UNORM

  • Compresión BC7_UNORM_SRGB

Para obtener información sobre qué formatos de compresión se admiten en las diferentes versiones de DirectX, vea Guía de programación para DXGI.

genere las MIPS

para generar una cadena MIP completa en tiempo de compilación e incluirla en el archivo de salida; en caso contrario, No.Si es No y el archivo de código fuente ya contiene una cadena mapa de MIP, el archivo de salida tendrá una cadena MIP; de lo contrario, el archivo de salida no tendrá ninguna cadena MIP.

Salida de contenido

Especifica el nombre del archivo de salida.

Nota importanteImportante
Cambiar la extensión del nombre del archivo de salida no tiene ningún efecto en el formato del archivo.

Hh972446.collapse_all(es-es,VS.110).gifConfiguración de la canalización del contenido de mallas

Cuando utilice la herramienta de canalización de contenido de mallas para compilar un activo de malla, puede cambiar el nombre del archivo de salida.

Propiedad

Descripción

Salida de contenido

Especifica el nombre del archivo de salida.

Nota importanteImportante
Cambiar la extensión del nombre del archivo de salida no tiene ningún efecto en el formato del archivo.

Hh972446.collapse_all(es-es,VS.110).gifConfiguración de la canalización de contenido del sombreador

Cuando utilice la herramienta de canalización de contenido del sombreador para compilar un activo de sombreador, puede cambiar el nombre del archivo de salida.

Propiedad

Descripción

Salida de contenido

Especifica el nombre del archivo de salida.

Nota importanteImportante
Cambiar la extensión del nombre del archivo de salida no tiene ningún efecto en el formato del archivo.

Cargar y usar activos 3D en tiempo de ejecución

Hh972446.collapse_all(es-es,VS.110).gifUtilizar texturas e imágenes

Direct3D proporciona funciones para crear recursos de textura.En Direct3D 11, la biblioteca de utilidades D3DX11 proporciona funciones adicionales para crear texturas y vistas de recursos de textura directamente a partir de archivos de imagen.Para obtener más información sobre cómo crear un recurso de textura en Direct3D 11, vea Texturas.Para obtener más información sobre cómo utilizar la biblioteca D3DX11 para crear un recurso o una vista de recursos de textura de un archivo de imagen, vea Cómo: Inicializa una textura Desde un archivo.

Hh972446.collapse_all(es-es,VS.110).gifUtilizar modelos 3D

Direct3D 11 no proporciona funciones para crear recursos a partir de modelos 3D.En su lugar, tiene que escribir código que lea el archivo del modelo 3D y cree búferes de y de índice que representen el modelo 3D y cualquier recurso que requiera el modelo, por ejemplo, texturas o sombreadores.

Hh972446.collapse_all(es-es,VS.110).gifUtilizar sombreadores

Direct3D proporciona funciones para crear recursos y el enlace del sombreador ellos en la canalización programable de los gráficos.Para obtener más información sobre cómo crear un recurso de presentación en Direct3D y enlazarlo a la canalización, vea Guía de programación para HLSL.

En la canalización programable de gráficos, cada fase de la canalización debe aportar a la siguiente fase de la canalización un resultado con formato de forma que se pueda entender.Dado que el Diseñador de sombras puede crear solamente sombreadores de píxeles, esto significa que depende de la aplicación el garantizar que los datos que recibe están en el formato que se espera.Hay varias fases del sombreador programable que tienen lugar antes del sombreador de píxeles y que realizan transformaciones geométricas: el sombreador de vértices, el sombreador de casco, el sombreador de dominios y el sombreador de geometría.La fase de la teselación no programable también aparece antes del sombreador de píxeles.Independientemente de cuál de estas fases preceda directamente al sombreador de píxeles, debe facilitar su resultado en este formato:

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

Dependiendo de los nodos del diseñador del sombreador que use en su sombreador, puede también que tenga que proporcionar datos adicionales en el formato según estas definiciones:

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

Vea también

Tareas

Cómo: Exportar un sombreador

Otros recursos

Trabajar con activos 3D para juegos y aplicaciones