cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006
-
22 sept. 2006 à 02:03
cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006
-
29 sept. 2006 à 11:53
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 )
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 29 sept. 2006 à 09:16
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.
cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006 28 sept. 2006 à 17:45
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.
cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006 28 sept. 2006 à 18:22
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.