2009-02-11 15 views

Répondre

3

Oui, vous pouvez partager des ressources entre D3D9Ex et dispositifs D3D10 selon la technique décrite ici:

Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

Notez que l'accès GPU aux surfaces partagées n'est pas synchronisé - par exemple, si vous restituez à la même surface rendre sur deux dispositifs simultanément, s'attendre à toutes sortes de corruptions et de courses. Pour contourner ce problème, assurez-vous qu'un périphérique est en cours de rendu sur la surface partagée avant que l'autre ne l'utilise. Une option est la requête d'événement (IDirect3DQuery9), l'autre fait un StretchRect à une petite surface et le verrouille (si Lock réussit, le GPU a terminé tous les travaux précédents)

-1

Quelqu'un me corriger si je me trompe, mais, Non et Non

Qu'est-ce que vous avez l'intention? Avoir une texture statique sur deux appareils? Si c'est le cas, vous pouvez facilement le faire en chargeant deux fois la même texture dans les deux pools par défaut. Sachez simplement que modifier un ne modifiera pas nécessairement l'autre.

Si vous essayez de partager une texture gérée sur deux périphériques, je ne pense pas que ce soit réalisable avec n'importe quel type de contrôle. SLI pourrait le faire derrière la scène, mais vous n'aurez aucun contrôle sur elle.

Si vous souhaitez utiliser explicitement une texture générée à partir d'un périphérique sur l'autre périphérique, vous devrez le télécharger depuis le périphérique source et le télécharger sur le périphérique cible à chaque image. Ce sera lent mais si absolument nécessaire, cela peut être fait de cette façon.

0

Vous pouvez partager des ressources Direct3D9 entre des périphériques ou des processus.

Feature Summary (Direct3D 9 for Windows Vista) - Sharing Resources

Une technique similaire fonctionne pour les ressources Direct3D10 (vous spécifiez également la poignée de partage). Ce GameDev.net topic traite du partage entre D3D9Ex et D3D10 en détail. Les conclusions dans ce sujet semblent être que, bien que basé sur la documentation, il devrait être possible (avec certaines limitations), dans la pratique, il ne fonctionne pas du tout (peut-être les restrictions sont-elles sévères?)

Questions connexes