2009-01-02 4 views
2

Microsoft distribue le code source pour référencer les implémentations de leurs différentes API Direct3D aux fournisseurs de matériel, aux développeurs de pilotes, etc. Ce code utilise le système de construction WDK (anciennement DDK), toujours très cryptique, et ne fonctionne quasiment jamais. . Bien que largement utilisé, ce code est semi-privé, donc il n'y a jamais d'informations utiles de base disponibles sur le web. Ceci est couramment utilisé assez (et une douleur bien connue dans le cul dans cette communauté), et l'information de base de construction insensible assez, qu'il devrait être détectable sur Google. Le readme de construction suggère d'utiliser le WDK et de construire avec la commande build -cz -daytona. Ceci, de manière confuse, crache un tas de sortie mais ne construit rien. Passé ce, le Vista avec WDK 6001.18002, la dernière distribution source d3def9 échoue dans le sous-projet link avec "Impossible de produire un avertissement de sortie traité comme erreur".Comment construire le réfrast de Windows D3D9 à partir de la source?

Le fichier XP d3dref9.dll peut également être source de confusion lors de la création, car il ne parvient souvent pas à trouver les en-têtes et types D3D.

+0

Je sais que c'est une question plus ancienne, mais vous souvenez-vous où vous avez acquis la source de réfrast d3d9? J'ai regardé partout sur le web et je n'ai pas réussi à le trouver. Merci. – user1632018

+0

Il est uniquement disponible en privé pour les fournisseurs de matériel de Microsoft. Je pense que c'est extrêmement regrettable (j'ai fait valoir à Microsoft que ce serait un outil puissant pour la recherche académique, comme dans mes utilisations, entre autres choses).J'ai eu la chance d'avoir accès à ce moment tout en consultant pour Intel et NVIDIA. – jrk

+0

... pour des utilisations similaires aujourd'hui, je recommanderais les implémentations OpenGL de référence, qui * sont * plus largement disponibles sous forme de source. – jrk

Répondre

2

Il y a généralement deux problèmes majeurs assez communs dans la construction des gouttes de source de réfringent puisqu'elles proviennent directement de Microsoft. Tout d'abord, la commande build -cz -daytona est soit une faute de frappe, soit repose sur une configuration externe supplémentaire non documentée. Construire dans ce mode analyse toute la source, mais ne spécifie jamais quelle plate-forme (s) à construire. Puisque toutes les plates-formes dirs (daytona et win9x), où les sorties réelles sont spécifiées, sont «facultatives», rien n'est jamais construit réellement. La solution consiste à utiliser à la place la commande correctement spécifiée build -cz daytona (pas de '-' sur daytona). Cela devrait analyser les sources et puis réellement construire tout. Au-delà, il y a généralement aussi des problèmes avec la configuration de construction prête à l'emploi.

Les nouveaux WDK (par exemple sur Vista) échouent généralement dans l'étape de liaison finale avec une erreur de liaison parasite. Ceci est facilement corrigé en ajoutant:

LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) /IGNORE:4001 

au fichier de construction link/sources.inc. Après cela, build -cz daytona dans la racine de la chute de la source devrait construire et lier tout out-of-the-box. Sur XP, il est également courant d'avoir des problèmes si vous utilisez des DDK plus anciens (pré-Windows Server 2003, c'est-à-dire DDK "XP"). En particulier, le projet de réfraction repose sur des en-têtes D3D9 de base existant à l'extérieur, et ceux-ci ne sont pas inclus dans XP DDK. Le simple fait d'utiliser les derniers WDK (rebaptisés "DDK" après XP) résout ce problème. Contrairement à la dénomination, tous les nouveaux WDK sont généralement des supersets de versions plus anciennes, et incluent donc des environnements de construction pour les plateformes via XP.

Il peut également y avoir des problèmes avec certaines versions de sources de réfringence XP, y compris du code qui déclenche plus d'erreurs de compilation pédantes dans les nouvelles versions du compilateur WDK. Ceux-ci, cependant, peuvent généralement être facilement corrigés par compilation itérative et modification de source en réponse à toute simple erreur de sécurité/correction soulevée par le compilateur.

Questions connexes