O Windows 8 ainda suporta o DirectX 9?

9

O Windows 8 suporta o DirectX 9? Porque eu estava examinando alguns exemplos escritos em C ++ e DirectX 9 criados para o Windows 8. Não era isso, como eu o conheço (veja aqui http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2 ) Por exemplo, inicializando o DirectX com COM:

ComPtr<ID3D11Device1> dev;
ComPtr<ID3D11DeviceContext1> devcon;

É estranho porque eu conheço da maneira antiga:

ID3D11Device *dev;                  
ID3D11DeviceContext *devcon;  

(Espero que você entenda o que eu quero dizer)

Espero que não tenha mudado completamente devido ao lançamento de seu novo sistema operacional.

LaVolpe
fonte
11
Eu achava muito difícil imaginar que a Microsoft repentinamente deixaria o suporte para mais de 90% de todos os jogos na plataforma Windows. Também acho ainda mais difícil acreditar que as pessoas não fiquem furiosas com esse movimento até agora.
Jari Komppa
Dito isso, é possível que os SDKs mais recentes não incluam cabeçalhos / bibliotecas dx9; Eu não verifiquei. Isso não significa que você não pode simplesmente usar o dx9 sdk como antes. A menos, é claro, que o mais recente estúdio visual o proíba de alguma forma, mas isso seria muito bobo.
Jari Komppa
Bem, eu também não acredito, mas acho que é possível porque, para obter a marca "Windows 8", o PC tem uma tela sensível ao toque e você já viu um jogo escrito em DirectX que suporta jogos com a tela sensível ao toque?
Lavolpe
Tenho certeza de que você não poderá criar aplicativos de "interface do usuário moderna" com o dx9.
Jari Komppa
11
Os objetos D3D sempre foram objetos COM - não usando ponteiros brutos, mas colocá-los em um ponteiro COM inteligente sempre foi possível.

Respostas:

12

Sim , o Windows 8 suporta o DirectX 9.

Para o desenvolvimento, o antigo DirectX SDK agora está obsoleto , mas você terá todas as bibliotecas e cabeçalhos necessários no novo Windows 8 SDK, incluído no Visual Studio 2012. Você pode seguir o "caminho antigo" sem problemas . Se você precisar do PIX para alguma depuração ou a biblioteca D3DX de alto nível, precisará instalar o DXSDK antigo novamente, pois esse não está no Windows 8 SDK.

Contudo isso é válido apenas para aplicativos de área de trabalho antigos simples. Para aplicativos estilo Metro, deixarei Chuck Walbourn da Microsoft falar :

Direct3D9 e Direct3D9Ex não são suportados para aplicativos estilo Metro. O uso do DirectX SDK com aplicativos estilo Metro não é recomendado ou suportado. Consulte http://msdn.microsoft.com/en-us/library/ee663275.aspx .

Há vários recursos disponíveis para ajudá-lo a transportar uma base de código do Direct3D 9 para o Direct3D 11. A maioria do material para a transferência do Direct3D 9 para o Direct3D 10.x se aplica totalmente aqui, pois a API do Direct3D 11 é muito semelhante ao Direct3D 10.

Vejo http://blogs.msdn.com/b/chuckw/archive/2011/07/11/getting-started-with-direct3d-11.aspx . Verifique a apresentação do Windows para a realidade: tirando o máximo proveito dos gráficos do Direct3D 10 em seus jogos, pois abrange inúmeras armadilhas e problemas de desempenho que os desenvolvedores enfrentaram no passado, e a Atualização de tecnologia do DirectX 11 para obter um resumo das diferenças entre o Direct3D 10 .xe Direct3D 11.

O MSDN também possui um guia de portabilidade http://msdn.microsoft.com/en-us/library/ff476190.aspx, que indica http://msdn.microsoft.com/en-us/library/bb205073.aspx para indo diretamente do Direct3D 9 para o Direct3D 11.

Você não pode usar o D3D9 diretamente para aplicativos estilo Metro. Mas você pode usar o D3D11 e limitar-se a algum nível de recurso (por exemplo D3D_FEATURE_LEVEL_9_3) se desejar oferecer suporte a hardware legado.

Laurent Couvidou
fonte
Uau, obrigado pela sua resposta. Na minha
opinião
Bem, na verdade não, eu estou trabalhando nisso agora;);
Laurent Couvidou 16/11/2012
11
AFAIK, o win8 SDK que acompanha o VS 2012, não envia mais nenhum cabeçalho D3D11X * - apenas o D3D11 *. Isso deixa você sem várias funções utilitárias, como carregar shaders de um arquivo e compilá-los em uma chamada de função.
De fato. O que a Microsoft diz sobre isso: "Esteja ciente de que as tecnologias de substituição para os usos atuais do D3DX11 incluem o DirectXTex e o DirectXTK. O D3DXMath é substituído pelo DirectXMath." Não testado até agora.
18712 Laurent Couvidou
3

O Windows 8 tem o mesmo suporte básico para aplicativos Direct3D 9 que estava presente no Windows 7 e no Windows Vista. O Direct3D 9 é legado e, definitivamente, existem alguns problemas de compatibilidade que podem afetar os jogos baseados no Direct3D 9, mas eles funcionam mais ou menos tão bem quanto no Windows 7.

O desenvolvimento com o Direct3D 9 no Windows 8 é um pouco mais desafiador do que no Windows 7. Os cabeçalhos padrão do Direct3D 9 fazem parte do Windows 8.0 SDK (incluído no VS 2012), mas isso não inclui o D3DX9. O Direct3D 9 Debug Runtime não é suportado no Windows 8. Você pode usar o DirectX SDK herdado no Windows 8, mas há vários desafios para instalá-lo e limitações.

A API recomendada a ser usada para gravar novos aplicativos no Windows 7 e no Windows 8 é o Direct3D 11. Isso funciona para aplicativos de área de trabalho Win32 e aplicativos da Windows Store. Além disso, é recomendável usar o Windows 8.x SDK e não usar o DirectX SDK.

Consulte Jogos para Windows e o DirectX SDK para obter muitas postagens sobre esse mesmo tópico.

Chuck Walbourn
fonte
Observe que você não "instala o DirectX" em nenhuma versão do Windows mais recente que o Windows XP Service Pack 1. O pacote "DirectX End-User Runtime" será instalado no Windows XP SP2, Windows Vista, Windows 7 e Windows 8.x, mas ele não instala "DirectX". Ele apenas implanta algumas DLLs auxiliares que são bits opcionais do agora herdado DirectX SDK: XINPUT 1.3, XAudio 2.7, D3DX, etc. Link
Chuck Walbourn,
2

O DirectX será instalado no Windows 8, Windows 7, Windows Vista ou Windows XP.

Mikolaj Marcisz
fonte