Comment serait-il difficile de porter une application directx 7 pour fonctionner sur Windows 7?

StackOverflow https://stackoverflow.com/questions/1522039

  •  19-09-2019
  •  | 
  •  

Question

Nous avons eu un jeu d'arcade / rachat en cours d'exécution sur Win98, mais le matériel qui peut l'exécuter a finalement disparu obsolète. Le jeu a utilisé un certain nombre d'effets d'échelle, certains à travers le chemin 3D, et a joué quelques trucs faire avancer les choses dans et hors de la mémoire vidéo. Si je devais entreprendre le portage pour fonctionner sur Windows 7, combien la difficulté serait-il probable? Serait-il la plupart du temps recompilation, ou ont les API que cette transformation subi, je pourrais aussi bien récrire les interfaces de périphériques?

Était-ce utile?

La solution

Ne pensez pas comme le portage à Win7. Tout simplement port DX9 et laisser DX faire le travail avec les parties Win7. Enfait, vous pouvez probablement laisser tout comme est et shuold courir - mais vous mentionnez que vous faites des choses folles avec mémoire vidéo que je suppose n'a rien à voir avec DX. (Par exemple, soit par GDI ou un autre bidouille?). Quoi qu'il en soit, le DX7, 8 et 9 API ont toutes des différences assez drastiques. Mais la bonne chose est qu'ils sont tous rétrocompatibles. Si le code que vous avez est dx7 pur, essayez la compilation contre le dernier SDK et voir si cela fonctionne sur win7 d'emblée.

Autres conseils

Il a été un moment que je l'ai écrit tout code DirectX7 (ou code direct X du tout), mais si je me souviens, il y avait une API importante change événement entre 7 et 8 - et encore moins 9 ou 10 - qui ferait une telle changer un peu plus difficile. Plus précisément, je pense que le changement majeur est qu'ils refactorisés le système après 7 de fusion DirectDraw en Direct3D de sorte que les deux systèmes ne sont plus complètement séparés entre 7 et 8. Je regarde pas depuis lors, mais je pense que compte tenu de la nombre de nouvelles méthodes de codage et comme l'API a changé un peu et il va probablement être un peu d'un projet pour faire ces changements plutôt que la plupart du temps recompilation comme vous pourriez avoir espéré.

Vous transité des choses dans et hors de la mémoire vidéo? frissonner

Mais ... la plus rapide de le faire maintenant que quand DX7 était autour. Qu'est-ce exactement ce que vous faisiez? D'après votre description il est impossible de dire comment il serait facile. Une application DX7 devrait encore fonctionner sur Windows 7, je ne peux pas penser à ce que les caractéristiques bizarre que vous avez peut-être utilisé que provoquerait sa rupture.

convertir également une application à DX9 de 7 n'est pas vraiment tout ce que difficile (+ Converting à DX10 serait un cauchemar). Ils sont encore relativement similaires ... la principale chose qui a changé depuis ces jours est le raccourcissement des choses comme D3DTRANSFORMSTAGESTATE_ * ou * D3DRENDERSTATE_ à D3DTSS_ * ou D3DRS _ *.

Edit: Le plus grand changement que je peux penser à ce qui est arrivé depuis DX7 est que les fabricants de cartes graphiques ont chuté pour le soutien palettisés qui textures casser certaines vieilles applications « pourrait » sur les machines modernes. C'est vraiment une solution très simple mais ...

Edit2: Décompression choses à partir du disque dans une texture peut être un peu d'une douleur. Votre principal problème est le fait que vous finissez par souffrir d'une baisse de performance lors de la création de la texture. Toutefois, si vous avez une charge de textures déjà créé et ouvert, vous pouvez charger à la texture pertinente et quand vous s'il vous plaît. Vous souffrez seulement un coup de verrouillage / déverrouillage. Cela peut être atténué en chargeant une ressource quelques images à l'avance. Si vous faites cela, cependant, il faudra sans doute multi-threading et appeler D3D de plusieurs threads. Si vous faites cet ensemble le drapeau multi-thread sur le périphérique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top