2009-12-25 3 views
0

J'écris des hooks windows32 autour de la bibliothèque DirectX 6.1 vers DirectX 9.0c; L'idée est de remplacer tous les appels vers l'appareil 3D DX 6.1 par des appels à Direct 9.0c et d'injecter du code personnalisé, donc un ancien jeu auquel je corrige (99 'année) pourra utiliser des shaders, des post-effets, etc.Obtention par programme des majuscules de périphérique pour DirectX 6.1 (DDraw4)

L'ancien périphérique 3D DX 6.1 a été créé en créant le module DDraw. Le jeu énumère ensuite les limites des périphériques. Dans mon module, tout le module DDraw est ignoré et la vue 3D est initialisée. J'ai donc un problème car je ne peux pas donner au jeu Ddraw4 les bouchons de périphériques dont il a besoin car je n'ai pas du tout d'appareil DDraw! Donc, ma question est de savoir comment obtenir des caps de périphériques DDraw4 sans initialiser le périphérique DDraw4. Peut-être suffira-t-il de créer une liste fixe et de la donner au jeu, mais je n'ai aucune idée de ce qui devrait figurer sur cette liste (j'ai donné ce que je pensais être, et le jeu s'est arrêté). vérifié)

Répondre

0

La solution était un peu brute, mais le plus important - fonctionne parfaitement. J'ai écrit un petit utilitaire autonome, qui initialise DDraw 6.1, puis récupère les majuscules et minuscules, puis les vide dans le fichier sur le disque (les majuscules de l'appareil sont au format Plain Old C, donc l'enregistrement est très simple) quitte. Ensuite, je peux lire le fichier des majuscules de l'appareil à partir du disque et le renvoyer lorsque l'application me le demande.

3

Je n'ai jamais essayé cela, mais vous pourriez essayer ce qui suit. En supposant que vous n'avez pas le SDK 6.1, vous pouvez créer la structure DDCAPS (la DirectDraw) vous-même (il s'agit simplement de DWORDs), puis obtenir les fonctionnalités (D3DCAPS9) en utilisant la fonction DX9 GetDeviceCaps. Ensuite, prenez les valeurs dont vous avez besoin à partir des caps acquis (en utilisant DX9) et définissez les valeurs équivalentes pour DirectDraw dans votre structure DDCAPS. Vous pouvez ensuite alimenter cette structure de casquettes peuplée au jeu. Quelques mises en garde - comme vous l'avez mentionné, vous ne savez pas ce dont il a besoin spécifiquement, donc c'est un peu aléatoire (sauf si vous avez le code source). En outre, il ne peut pas y avoir de mappage 1: 1 pour les valeurs de structure des majuscules (entre DX9 et DDraw). Enfin - ceci est lié au fait de ne pas avoir le SDK 6.1 - si vous ne connaissez pas les valeurs de l'indicateur, vous pouvez définir un indicateur de façon incorrecte lors de la définition des valeurs en fonction des limites acquises. Comme je l'ai mentionné, cela peut être loin (ou exiger beaucoup de travail de détective), mais j'ai pensé que cela pourrait être quelque chose que vous pourriez essayer.

Questions connexes