DX9 : Copie de surface à surface

Résolu
Signaler
Messages postés
6
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
29 septembre 2006
-
Messages postés
6
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
29 septembre 2006
-
Salut tout le monde ;)

J'essaie de programmer des applications multimédias en DX9 depuis peu, et je me débrouille pas trop mal à part que... Je ne sais pas s'il y a moyen de copier une surface sur une autre.
Pour ceux qui ne voient pas trop ce que je veux dire, je vous donne un exemple :
On va dire que je veux concevoir un portrait personnalisé. Pour ce faire j'utilise parmi un certain nombre de modèles (donc chacun ayant une texture propre) un visage, une coupe de cheveux, des lunettes etc. Et mon problème c'est qu'au lieu de superposer tout celà à chaque fois sur le backbuffer, je veux faire une seule superposition et garder le tout dans une texture unique qui sera affichée tout simplement. Tout ça dans un souci d'éconmie mémoire et processeur.

Si vous connaissez la solution, je vous en remercie d'avance ;)

(C'est pour VB.Net mais j'adapterai si vous connaissez uniquement VB6 )

6 réponses

Messages postés
164
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
9 octobre 2006

Ben tu as plusieurs méthodes (par contre je ne peux te donner que la théorie car je ne sais pas le faire en pratique) : soit tu utilises GetPrivateData et SetPrivateData mais là tu vas devoir faire toi meme la methode de mélange des couleurs, soit tu utilises le rendu sur texture pour chaque nouvelle image (changement de "filtre" où "filtre" = "moustache") puis tu recuperes le resultat dans une surface ou une texture que tu affiches ensuite tant qu'il n'y a pas de changement.
Messages postés
164
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
9 octobre 2006

Salut a toi,
j'ai du mal à voir ce que tu utilises, des surfaces ou des textures ? Et c'est pour un rendu 3D ou 2D ?
Messages postés
6
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
29 septembre 2006

Oui, désolé pour ma confusion, au temps pour moi. En fait ce sont bien des Textures que j'utilise. Le rendu est fait par l'usage de Sprite qui copie donc ces Textures sur le Backbuffer pour donner une sorte de 2D.
Messages postés
164
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
9 octobre 2006

Ok donc si je comprends bien tu voudrais copier le contenu d'une texture vers une autre texture ?
Messages postés
6
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
29 septembre 2006

Exactement. En théorie on pourrait le faire en passant par l'objet Graphics, mais j'utilise un mode graphique avec un canal alpha, ce qui empêche d'accéder à cet Objet depuis la Texture.
(Méthode : Texture


.GetSurfaceLevel(0).GetGraphics
)
Il faut donc que je trouve un autre moyen.
Messages postés
6
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
29 septembre 2006

Ok, merci pour ta réponse qui ne manquera pas de m'aider. Je n'en doute pas