Uso de recursos 3D no seu jogo ou App
Este artigo descreve como você pode usar o Visual Studio para processar os recursos 3D e para incluí-los em suas compilações.
Após usar as ferramentas no Visual Studio para criar recursos 3-D, a próxima etapa é usá-las em seu aplicativo.Mas antes de usá-los, seus recursos precisam ser convertidos em um formato que o DirectX pode compreender.Para ajudá-lo a transformar seus recursos, o Visual Studio fornece personalizações de compilação para cada tipo de recurso que pode gerar.Para incluir os recursos em sua compilação, tudo o que você tem a fazer é configurar seu projeto usar as personalizações de compilação, adicionar recursos ao seu projeto, e configurar os recursos para usar personalização correta de compilação.Depois disso, é possível carregar os recursos em seu aplicativo e usá-los criando e preenchendo os recursos do DirectX exatamente como você faria em qualquer outro aplicativo DirectX.
Configurando seu projeto
Antes de poder implantar seus recursos 3-D como parte de sua compilação, o Visual Studio precisa saber sobre os tipos de recursos que você deseja implantar.Visual Studio já sabe sobre muitos tipos de arquivo comuns, mas como somente certos tipos de apps usam recursos 3D, Visual Studio não pressupõe que um projeto criará esses tipos de arquivos.Você pode informar a Visual Studio que seu app usa esses tipos de recursos usando arquivos de personalização de compilação––que informam sobre Visual Studio como processar diferentes tipos de arquivos de forma útil –– que são fornecidos para cada tipo de recurso.Como essas personalizações são aplicadas em uma base por projeto, tudo o que você tem a fazer é adicionar personalizações adequadas ao seu projeto.
Para adicionar personalizações de compilação ao seu projeto
Em Gerenciador de Soluções, abrir o menu de atalho para o projeto, e, em seguida escolher Compilar Personalizações.A caixa de diálogo Visual C++ Build Customizations Files é exibida.
Você somente precisará adicionar essas personalizações de compilação ao Visual Studio; após ter adicionado, poderá pular esta etapa.
Escolha o botão Existência de localização e navegue para o diretório de instalação do Visual Studio\Common7\IDE\extensões\Microsoft\\VSGraphics, que contém as três personalizações de compilação que oferecem suporte à compilação de recursos 3-D.Selecione um dos arquivos de personalização de compilação — por exemplo, ImageContentTask.targets — e então escolha o botão Abrir .Quando aparecer a mensagem que pergunta se você deseja adicionar o diretório ao caminho de pesquisa das personalizações de compilação, escolha o botão Sim .Isso torna todas as três personalizações de compilação disponíveis.
Escolha o botão Atualizar lista para atualizar o controle de exibição de grade Arquivos disponíveis de personalização de compilação.
No modo de controle de exibição de grade dos Arquivos de Personalização da Compilação Disponível, selecionar as caixas de seleção que correspondem aos tipos de ativo que você quer usar em seu projeto, conforme descrito nesta tabela:
Tipo de recurso
Compilar nome de personalização
Texturas e imagens
ImageContentTask(.targets, .props)
Modelos 3-D
MeshContentTask(.targets, .props)
Sombreadores
ShaderGraphContentTask(.targets, .props)
Escolha o botão OK.
Incluindo recursos em sua compilação
Agora que o projeto conhece os diferentes tipos de ativos 3D a serem usados, a próxima etapa é informar quais arquivos são ativos 3D e que tipos de ativos eles são.
Para adicionar um recurso a sua compilação
No Gerenciador de Soluções, em seu projeto, abrir o menu de atalho de um ativo, e, em seguida, escolher Propriedades.A caixa de diálogo Página de propriedades dos recursos é exibida.
Certificar-se de que as propriedades de Configuração e de Plataforma são definidas para os valores que você quer que suas alterações sejam aplicadas.
Em Propriedades de Configuração, escolha Geral, e na grade de propriedade, em Geral, defina a propriedade Tipo de Item para o tipo de item de conteúdo apropriado do pipeline.Por exemplo, para um arquivo de imagem ou textura, escolha Canalização de conteúdo da imagem.
Importante Por padrão, o Visual Studio assume que muitos tipos de arquivos de imagem devem ser categorizados usando o tipo de item Imagem integrado no Visual Studio.Portanto, você precisa alterar a propriedade Tipo de Item de cada imagem que você deseja que seja processada pelo pipeline do conteúdo da imagem.Outros tipos de arquivo de origem de pipeline de conteúdo para modelos 3D e elementos gráficos visuais do sombreador usam como padrão o Tipo de Item correto.
Escolha o botão OK.
Aqui estão três tipos de itens de canalização de conteúdo e sua origem associada e os tipos de arquivo de saída.
Tipo de Item |
Tipos de arquivos de origem |
Formato do arquivo de saída |
---|---|---|
O Pipeline do Conteúdo de Imagem |
Formato PNG (.png) JPEG (.jpg, .jpeg, .jpe, .jfif) Superfície de desenho direta (.dds) Formato de troca de gráficos (.gif) Bitmap (.bmp, .dib) Formato de arquivo de imagem marcado (.tif, .tiff) Targa (.tga) |
Superfície DirectDraw (.dds) |
Pipeline de Conteúdo de Malha |
Arquivo de Troca AutoDesk FBX (.fbx) Arquivo Collada DAE (.dae) Wavefront Arquivo OBJ (.obj) |
Arquivo de malha 3-D (.cmo) |
Pipeline de conteúdo do sombreador |
Imagens Gráficas do Shader (.dgsl) |
Saída do sombreador compilado (.cso) |
Configurando as propriedades da canalização de conteúdo de recurso
Você pode definir as propriedades do conteúdo do pipeline de cada arquivo de recurso de modo que ele seja incorporado de uma maneira específica.
Para configurar as propriedades de conteúdo da pipeline
No Gerenciador de Soluções, em seu projeto, abrir o menu de atalho para o arquivo de ativo, e, em seguida, escolher Propriedades.A caixa de diálogo Página de propriedades dos recursos é exibida.
Certificar-se de que as propriedades de Configuração e de Plataforma são definidas para os valores que você quer que suas alterações sejam aplicadas.
Em Propriedades de Configuração, escolha o nó do pipeline de conteúdo –– por exemplo, Pipeline de Conteúdo de Imagem para ativos de textura e imagem e em seguida na grade de propriedade, defina as propriedades para valores apropriados.Por exemplo, para gerar mipmaps para um recurso de textura em tempo de compilação, defina a propriedade Gerar Mips para Sim.
Escolha o botão OK.
Configuração do Pipeline do Conteúdo da Imagem
Ao usar a ferramenta de pipeline de conteúdo de imagem para criar um recurso de textura, você pode compactar a textura de várias maneiras, indicar se os níveis de MIP devem ser gerados no tempo de compilação, e alterar o nome do arquivo de saída.
Propriedade |
Descrição |
---|---|
Compressão |
Especifica o tipo de compactação usado para o arquivo de saída. As opções disponíveis são:
Para obter informações sobre os formatos de compactação suportados em versões diferentes do DirectX, consulte Guia de programação para DXGI. |
Gerar Mips |
Sim para gerar uma cadeia de MIP completa no tempo de compilação e para inclui-la no arquivo de saída; caso contrário, Não.Se Não e o arquivo de origem já contém uma cadeia mipmap, então o arquivo de saída terá uma cadeia MIP; caso contrário, o arquivo de saída não terá nenhuma cadeia MIP. |
Saída de conteúdo |
Especifica o nome do arquivo de saída.
Importante
Altere a extensão do nome do arquivo de saída que não tem efeito no formato de arquivo.
|
Configuração do pipeline de conteúdo de malha
Ao usar a ferramenta de pipeline de conteúdo de malha para criar um recurso de malha, você pode alterar o nome do arquivo de saída.
Propriedade |
Descrição |
---|---|
Saída de conteúdo |
Especifica o nome do arquivo de saída.
Importante
Altere a extensão do nome do arquivo de saída que não tem efeito no formato de arquivo.
|
Configuração do pipeline de conteúdo do sombreador
Ao usar a ferramenta de pipeline de conteúdo do sombreador para criar um recurso do sombreador, você pode alterar o nome do arquivo de saída.
Propriedade |
Descrição |
---|---|
Saída de conteúdo |
Especifica o nome do arquivo de saída.
Importante
Altere a extensão do nome do arquivo de saída que não tem efeito no formato de arquivo.
|
Carregando e usando ativos 3-D em tempo de execução
Usando imagens e texturas
O Direct3D fornece funções para criar recursos de textura.No Direct3D 11, a biblioteca de utilitários D3DX11 fornece funções adicionais para criar recursos de textura e visualizações de recurso diretamente dos arquivos de imagem.Para obter mais informações sobre como criar um recurso de textura no Direct3D 11, consulte Texturas.Para obter mais informações sobre como usar a biblioteca D3DX11 para criar um recurso de textura ou uma visualização de recurso de um arquivo de imagem, consulte Como: Inicializar uma textura de Arquivo.
Usando modelos 3D
O Direct3D 11 não fornece funções para criar recursos de modelos 3-D.Em vez disso, você precisa escrever o código que lê o arquivo do modelo 3-D e cria os buffers de vértice e o índice que representam o modelo 3-D e quaisquer recursos que o modelo requer - por exemplo, as texturas ou os sombreadores.
Usando sombreadores
Direct3D fornece funções para criar recursos e associação de eles shader ao pipeline programável gráficos.Para obter mais informações sobre como criar um recurso do shader em Direct3D e associá-lo ao pipeline, consulte Guia de programação para HLSL.
No pipeline dos gráficos programáveis, cada estágio do pipeline deve dar o próximo estágio do pipeline um resultado que está formatado de modo que ele pode compreender.Como o Shader Designer só pode criar sombreadores de pixel, isso significa que depende do seu aplicativo garantir que os dados recebidos estão em um formato esperado.Vários estágios programáveis do sombreador ocorrem antes do sombreador de pixels e executam transformações geométricas — o sombreador de vértices, o sombreador de casco, o sombreador de domínio e o sombreador de geometria.A fase de tesselação não programável também ocorre antes do sombreador de pixel.Não importa qual desses estágios precede diretamente o sombreador de pixel, o resultado deve ser dado neste 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;
};
Dependendo dos nós do Shader Designer que você usa no seu sombreador, você também pode ter que fornecer dados adicionais no formato de acordo com estas definições:
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;
};