Pergunta

Eu tenho um noobish pergunta para qualquer gráficos programador.

Estou confuso como alguns jogos (como Crysis) pode suportar DirectX 9 (no XP) e 10 (no Vista)?

O que eu entendo é que se você escrever uma DX10 aplicativo e, em seguida, ele pode só é executado no Vista.

Talvez eles tenham 2 bases de código -- um escrito em DX9 e outro em DX10?Mas não é um exagero?

Foi útil?

Solução

Eles têm dois renderização de dutos, usando DX9 chamadas e uma usando DX10 chamadas.As APIs não são compatíveis, embora a maioria de qualquer motor de jogo pode ser reutilizado para qualquer um.Se você quer um pouco de código Aberto exemplos de como diferentes de renderização tubulações são feitas, olhar para algo como Ogre3d, que suporta OpenGL, DX9, e (em breve)DX10 renderização.

Outras dicas

A camada de renderização de jogos é geralmente bastante bem isolado/abstraídos parte de toda a aplicação.Até o motor de jogo está em causa, cada frame que são simplesmente a construção de uma lista de conceitual objectos (árvores, personagens, etc.).Se o motor de jogo escolhe para compor um determinado objeto, então cabe à camada de renderização como traduzir essa intenção em DX chamadas de desenho.Uma DX10 renderização vai gerar um conjunto diferente de desenhar as chamadas para um DX9 camada, mas conceitualmente eles ainda estão realizando a mesma ação - 'compor esta árvore".

A renderização é muito bem captada, porque é raro que você deseja obter qualquer informação de volta a partir da camada de renderização, uma vez que a 'compor esta árvore' ação é executada, o motor de jogo, apenas suponha que o processamento parece correto.Há pouca necessidade de lidar com diferentes potenciais resultados do DX9/DX10 processar chamadas porque 99,9% das informações do motor para o sistema de gráficos, e 0,1%, o que vem de volta provavelmente tem a mesma forma entre as duas APIs.

A instalação do aplicativo é um pouco mais icky, porque você tem de pedir ao sistema que se quer ou não DX10 é suportado e, graciosamente, cair de volta no DX9 de outra forma, mas esta é a tarifa padrão para configuração de aplicação (da mesma forma que o jogo tem para escolher uma resolução, taxa de atualização, dispositivo de entrada, etc.).

É provável que eles têm uma camada de abstração e desenvolvem-se contra isso.Em tempo de execução que instanciar o DX9 ou DX10 moldagem de concreto motores.

Eu imagino que a sua abstração é posicionado muito perto do DirectX camada e simplesmente fornece DX9 com apreciável manual implementações do DX10 funções ou melhora DX9 lógica de quando em execução no DX10.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top