Desenvolvendo aplicativos para diferentes níveis do recurso Direct3D (DirectX e C++)

Applies to Windows and Windows Phone

O Windows 8 dá suporte a uma grande variedade de configurações de hardware, desde sistemas Windows RT de energia eficiente até desktops de jogos de high-end com várias GPUs (unidades de processamento gráficos). Saber como otimizar vários dispositivos com diferentes níveis de desempenho de elementos gráficos permite a você atingir um maior público para o seu aplicativo da Windows Store usando DirectX em C++.

A API do Direct3D 11 usa níveis de recurso para categorizar os recursos gráficos do Direct3D aceitos por diferentes hardware de gráficos. Cada iteração do Direct3D não trouxe apenas diferentes recursos gráficos (como geometria e mosaico), mas também diferentes abordagens de renderização (como suporte para mais instruções e texturas maiores).

Observação  Os níveis de recurso do Direct3D valem apenas para aplicativos da Windows Store usando DirectX. Se você está desenvolvendo um aplicativo da Windows Store em JavaScript ou em C++, C# ou Visual Basic, os níveis de recurso não valem para ele.

  • Applies to Windows Phone

Observação  Todos os dispositivos Windows Phone só dão suporte ao nível de recurso 9_3.

Para obter uma visão geral completa de quais recursos são permitidos em cada nível de recurso do Direct3D, veja Níveis de recurso do Direct3D 11.

Nesta seção

TópicoDescrição

Publicando na Windows Store

Existem alguns requisitos que você deve considerar na hora criar um aplicativo da Windows Store usando DirectX em C++ para publicação na Windows Store. Este tópico explica como especificar o nível mínimo do recurso Direct3D que seu aplicativo permite e como publicar essas informações na descrição de seu aplicativo na Windows Store.

Implementando buffers de sombra

Para desenvolver um aplicativo do Tempo de Execução do Windows em DirectX com C++ que renderize efeitos de sombra e que use um recurso Direct3D nível 9_1, 9_2 ou 9_3, você deve usar um subconjunto específico de recursos de buffer de sombra Direct3D 10_0+ para implementar corretamente os efeitos de sombra. Nós vamos explicar como implementar os buffers de sombra do recurso Direct3D nível 9.

 

Práticas recomendadas para suporte de nível de recurso

Para atingir uma maior quantidade de dispositivos (e, assim, um público potencial maior), verifique se o aplicativo é executado com a configuração mínima de hardware para dispositivos do Windows 8 (e, portanto, Windows RT), que especifica um nível de recurso mínimo de 9_1 e 1 gigabyte (GB) de RAM. Com essa linha de base, você pode adicionar suporte para níveis de recurso superiores e usar o processamento expandido e o desempenho adicionado pelo hardware avançado, talvez até como um caminho de renderização separado no código. (Veja a seção Recursos para obter links de exemplos e mais informações.) Isso não só permite que os clientes com dispositivos com energia eficiente executem seu jogo, mas que os clientes com hardware avançado possam aproveitar a energia e as características adicionais de seu próprio dispositivo.

Veja alguns recursos de hardware que devem ser considerados quando você estiver projetando para hardware de alto desempenho:

  • Texturas maiores (ou com maior fidelidade)
  • Modelos/malhas mais detalhados
  • Níveis MIP adicionais
  • Modelos avançados de sombreador
  • Comportamentos mais sofisticados de sombreador (mais instruções por sombreador para obter efeitos de computação mais complexos)
  • Sombreadores de geometria
  • Sombreadores de computação
  • Mosaico
  • Pós-processamento adicional e efeitos do sombreador em tela inteira

Como os dispositivos do Windows RT não precisam aceitar níveis de recurso superiores a 9_1, os aplicativos DirectX que destinam-se à arquitetura do Windows RT devem destinar-se ao nível de recurso 9_1. Para alcançar um público maior, destine o conjunto de recursos 9_1 para os jogos e aplicativos como uma linha de base para todas as arquiteturas da CPU. Crie um jogo mais avançado visualmente, usando os níveis de recurso 10_0 ou superiores para os dispositivos que os aceitam. Se o seu jogo exigir um nível de recurso superior à capacidade do dispositivo no qual ele está sendo executado, use o Direct2D para exibir um aviso nos sistemas 9_1, caso seu aplicativo exija um nível de recurso superior. Recomendamos que você use a seguinte técnica para obter isso.



// This array defines the set of Direct3D hardware feature levels this app will support.
// Note the ordering should be preserved.
// Don't forget to declare your application's minimum required feature level in its
// description.  All applications are assumed to support 9.1 unless otherwise stated.
D3D_FEATURE_LEVEL featureLevels[] =
{
	D3D_FEATURE_LEVEL_11_1,
	D3D_FEATURE_LEVEL_11_0,
	D3D_FEATURE_LEVEL_10_1,
	D3D_FEATURE_LEVEL_10_0,
	D3D_FEATURE_LEVEL_9_3,
	D3D_FEATURE_LEVEL_9_2,
	D3D_FEATURE_LEVEL_9_1
};

// Create the DX11 API device object, and get a corresponding context.
ComPtr<ID3D11Device> device;
ComPtr<ID3D11DeviceContext> context;

D3D11CreateDevice(
	nullptr,                    // specify null to use the default adapter
	D3D_DRIVER_TYPE_HARDWARE,
	0,                          // leave as 0 unless software device
	creationFlags,              // optionally set debug and Direct2D compatibility flags
	featureLevels,              // list of feature levels this app can support
	ARRAYSIZE(featureLevels),   // number of entries in above list
	D3D11_SDK_VERSION,          // always set this to D3D11_SDK_VERSION for Windows Store apps
	&device,                    // returns the Direct3D device created
	&m_featureLevel,            // returns feature level of device created
	&context                    // returns the device immediate context
);

// ...

if (d3dDevice->GetFeatureLevel() < APP_MIN_FEATURE_LEVEL)
{
	// display warning using Direct2D
} 


Saiba que você chama D3D11CreateDevice para solicitar o(s) nível(is) de recurso para seu aplicativo da Windows Store usando DirectX, conforme mostrado no exemplo acima.

Quando testar o jogo, poderá forçar um sistema com um hardware de nível de recurso superior para emular um nível de recurso inferior usando a ferramenta dxcpl.exe incluída com o Microsoft Visual Studio. Por exemplo, usando o dxcpl.exe, você pode forçar um dispositivo 11_1 para emular um 9_1. Se você estiver planejando permitir dispositivos do Windows RT ou plataformas de nível de recurso inferior, torne essa ferramenta parte integral do seu processo de teste.

Recursos

O Exemplo de sprite simples de Direct3D e o Exemplo de gerador fractal HLSL do Direct3D demonstram esses métodos para adaptação a diferentes níveis de recurso do DirectX.

A apresentação do Microsoft GDC 2012 inclui mais informações sobre o desenvolvimento de jogos que funcionam na gama completa de hardware do Windows 8: Desenvolvendo jogos da Windows Store na gama completa de dispositivos do Windows 8.

Tópicos relacionados

Desenvolvendo aplicativos (C++ e DirectX)

 

 

Mostrar:
© 2014 Microsoft