Pergunta

Nós tivemos um jogo arcade / resgate em execução no Win98, mas hardware que pode executá-lo finalmente ido obsoleto. O jogo usado uma série de efeitos de escala, alguns através do caminho 3D, e jogou alguns truques em movimento coisas dentro e fora de memória de vídeo. Se eu fosse para empreender portá-lo para ser executado no Windows 7, o quanto o problema seria provavelmente ser? Será que ser maioritariamente recompilação, ou ter as APIs sido submetidos a tal transformação que eu poderia muito bem voltar a escrever as interfaces de dispositivo?

Foi útil?

Solução

Não pense nisso como portar para Win7. Simplesmente porta para DX9 e deixe DX fazer o trabalho com as partes Win7. De fato, você provavelmente poderia simplesmente deixá-lo como está e shuold correr - mas você mencionar que você fazer coisas malucas com memória de vídeo que eu assumo não tem nada a ver com DX. (Ou seja, quer através GDI ou algum outro truque?). De qualquer forma, o DX7, 8 e 9 APIs todos têm diferenças muito drásticas. Mas o bom é que todos eles são compatíveis com versões anteriores. Se o código que você tem é pura DX7, tentar compilar contra o SDK mais recente e ver se ele funciona em Win7 off reta.

Outras dicas

Tem sido um tempo desde que eu tenha escrito qualquer código DirectX7 (ou código Direct X em tudo), mas se bem me lembro, havia alguns API mudanças significativas evento entre 7 e 8 - vamos ao longo de 9 ou 10 - que faria tal mudar um pouco mais difícil. Especificamente eu acho que a grande mudança foi que eles reformulado o sistema após 7 de fundir DirectDraw em Direct3D para que os dois sistemas não eram mais completamente separados entre 7 e 8. Eu não olhar para ele desde então, mas eu suspeito que, dada a número de novos métodos de codificação e como que a API tem mudança um pouco por isso é provavelmente vai ser um pouco de um projeto para fazer essas mudanças, em vez de na sua maioria recompilação como você poderia ter esperado.

Você já mudou as coisas dentro e fora de memória de vídeo? estremecimento

Ainda assim ... é mais rápido para fazer isso agora do que quando DX7 estava por perto. O que exatamente você estava fazendo? De sua descrição é impossível dizer o quão fácil seria. Um aplicativo DX7 ainda deve ser executado no Windows 7, eu não consigo pensar em quais recursos estranho você pode ter usado que faria com que ele quebre.

Também converter um aplicativo para DX9 de 7 na verdade não é tão difícil (Convertendo para DX10 + seria um pesadelo). Eles ainda são relativamente semelhantes ... a principal coisa que mudou desde aqueles dias é o encurtamento de coisas como D3DTRANSFORMSTAGESTATE_ * ou D3DRENDERSTATE_ * até D3DTSS_ * ou D3DRS _ *.

Edit: A maior mudança que eu posso pensar o que aconteceu desde DX7 é que fabricantes de placas gráficas caíram suporte para texturas palettised que "poderia" quebrar alguns aplicativos antigos em máquinas modernas. Isso realmente é uma solução muito simples embora ...

Edit2: Decompressing coisas do disco em uma textura pode ser um pouco de dor. Seu principal problema é o fato de que você acaba de sofrer uma queda de desempenho quando você criar a textura. No entanto, se você tem uma carga de texturas já criados e abrir, em seguida, você pode carregar para a textura relevante como e quando quiser. Você só sofrer um golpe de bloqueio / desbloqueio. Isso pode ser atenuado através do carregamento de um recurso de alguns quadros com antecedência. Se você fizer isso, no entanto, sem dúvida, exigirá multi-threading e D3D chamando de vários segmentos. Se você fizer este conjunto a bandeira multi-thread no dispositivo.

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