Editar

Compartilhar via


Perguntas frequentes sobre a portabilidade do DirectX 11

Respostas a perguntas frequentes sobre a portabilidade de jogos para a Plataforma Universal do Windows (UWP).

A portabilidade do meu jogo será um conjunto de operações de pesquisa e substituição em métodos de API ou preciso planejar um processo de portabilidade mais cuidadoso?

O Direct3D 11 é uma atualização significativa do Direct3D 9. Há várias mudanças de paradigma, incluindo APIs separadas para o adaptador gráfico virtualizado e seu contexto, bem como uma nova camada de polimorfismo para recursos do dispositivo. Seu jogo ainda pode usar hardware gráfico essencialmente da mesma maneira, mas você precisará aprender sobre a nova arquitetura de API do Direct3D 11 e atualizar cada parte do código gráfico para usar os componentes de API corretos. Consulte Conceitos e considerações sobre portabilidade.

Para que serve o novo contexto do dispositivo? Devo substituir meu dispositivo Direct3D 9 pelo dispositivo Direct3D 11, pelo contexto do dispositivo ou por ambos?

O dispositivo Direct3D agora é usado para criar recursos na memória de vídeo, enquanto o contexto do dispositivo é usado para definir o estado do pipeline e gerar comandos de renderização. Para obter mais informações, consulte: Quais são as alterações mais importantes desde o Direct3D 9?

Preciso atualizar meu cronômetro de jogo para UWP?

QueryPerformanceCounter, juntamente com QueryPerformanceFrequency, ainda é a melhor maneira de implementar um temporizador de jogo para aplicativos UWP.

Você deve estar ciente de uma nuance com temporizadores e o ciclo de vida do aplicativo UWP. Suspender/retomar é diferente de um jogador reiniciar um jogo para desktop porque seu jogo retomará um instantâneo no tempo a partir do momento em que o jogo foi jogado pela última vez. Se uma grande quantidade de tempo se passou - por exemplo, algumas semanas - algumas implementações de cronômetro de jogo podem não se comportar normalmente. Você pode usar eventos do ciclo de vida do aplicativo para redefinir o cronômetro quando o jogo for retomado.

Os jogos que ainda usam a instrução RDTSC precisam ser atualizados. Consulte Tempo de jogo e processadores multicore.

O código do meu jogo é baseado em D3DX e DXUT. Existe algo disponível que possa me ajudar a migrar meu código?

O projeto da comunidade DirectXTK (Kit de Ferramentas do DirectX) oferece classes auxiliares para uso com o Direct3D 11.

Como faço para manter caminhos de código para a área de trabalho e a Microsoft Store?

A série de artigos de Chuck Walbourn intitulada Técnicas de codificação de uso duplo para jogos oferece diretrizes sobre o compartilhamento de código entre a área de trabalho e os caminhos de código da Microsoft Store.

Como carregar recursos de imagem em meu aplicativo UWP DirectX?

Há dois caminhos de API para carregar imagens:

Você também pode usar o DDSTextureLoader e o WICTextureLoader, do DirectXTK ou DirectXTex.

Onde está o SDK do DirectX?

O SDK do DirectX está incluído como parte do SDK do Windows. O SDK do DirectX mais recente separado do SDK do Windows foi em junho de 2010. Os exemplos do Direct3D estão na Galeria de Códigos junto com o restante dos exemplos de aplicativos do Windows.

E quanto aos redistribuíveis DirectX?

A grande maioria dos componentes no SDK do Windows já está incluída em versões com suporte do sistema operacional ou não tem nenhum componente DLL (como DirectXMath). Todos os componentes da API do Direct3D que os aplicativos UWP podem usar já estarão disponíveis para o jogo; você não precisa redistribuí-los.

Os aplicativos da área de trabalho Win32 ainda usam o DirectSetup, portanto, se você também estiver atualizando a versão da área de trabalho do seu jogo, consulte Implantação do Direct3D 11 para desenvolvedores de jogos.

Existe alguma maneira de atualizar o código da minha área de trabalho para o DirectX 11 antes de sair do Effects?

Consulte os efeitos da atualização do Direct3D 11. O Effects 11 ajuda a remover dependências de cabeçalhos herdados do DirectX SDK; Ele se destina ao uso como um auxílio de portabilidade e só pode ser usado com aplicativos de desktop.

Existe um caminho para portar meu jogo DirectX 8 para UWP?

Sim:

Posso portar meu jogo DirectX 10 ou 11 para UWP?

Os jogos da área de trabalho do DirectX 10.x e 11 são fáceis de portar para a UWP. Consulte Migrando para o Direct3D 11.

Como escolho o dispositivo de exibição certo em um sistema de vários monitores?

O usuário seleciona em qual monitor seu aplicativo é exibido. Deixe Windows fornecer o adaptador correto chamando D3D11CreateDevice com o primeiro parâmetro definido como nullptr. Em seguida, obtenha a interface IDXGIDevice do dispositivo, chame GetAdapter e use o adaptador DXGI para criar a cadeia de troca.

Como faço para ativar o antialiasing?

A suavização de serrilhado (multiamostragem) é habilitada quando você cria o dispositivo Direct3D. Enumere o suporte a várias amostras chamando CheckMultisampleQualityLevels e, em seguida, defina opções de várias amostras na estrutura DXGI_SAMPLE_DESC ao chamar CreateSurface.

Meu jogo é renderizado usando multithreading e/ou renderização diferida. O que preciso saber para o Direct3D 11?

Visite Introdução ao Multithreading no Direct3D 11 para começar. Para obter uma lista das principais diferenças, consulte Threading Differences between Direct3D Versions. Observe que a renderização adiada usa um contexto adiado do dispositivo em vez de um contexto imediato.

Onde posso ler mais sobre o pipeline programável desde o Direct3D 9?

O que devo usar em vez do formato de arquivo .x para meus modelos?

Embora não tenhamos uma substituição oficial para o formato de arquivo .x, muitos dos exemplos utilizam o formato SDKMesh. O Visual Studio também tem um pipeline de conteúdo que compila vários formatos populares em arquivos CMO que podem ser carregados com código do kit inicial do Visual Studio 3D ou carregados usando o DirectXTK.

Como faço para depurar meus shaders?

O Microsoft Visual Studio inclui ferramentas de diagnóstico para elementos gráficos DirectX. Consulte Depurando elementos gráficos DirectX.

Qual é o equivalente do Direct3D 11 para a função x?

Consulte o mapeamento de função fornecido em Mapear recursos do DirectX 9 para APIs do DirectX 11.

Qual é o equivalente DXGI\_FORMAT ao formato de superfície y?

Consulte o mapeamento de formato de superfície fornecido em Mapear recursos do DirectX 9 para APIs do DirectX 11.