Comment faire en dégradé en arrière plan d'un monde direct3D

Résolu
Signaler
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009
-
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009
-
Bonjour,

Je suis actuellement en train de réaliser un projet avec DirectX et j'aimerais inséré un dégradé de couleur sur la pictureBox, support du monde Direct3D. Je voulais essayer de fusionner deux images, une créée par directx avec tous mes vertex et mes mesh et l'autre une image dégradée mais je le sens mal.

Quelqu'un aurait il une iddée ?

Merci
Damien

8 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Ha pardon,
En VB6 tu dois créer une structure et la déclarer avec le format FVF et le bazar ?
Alors là où tu utilise D3DFVF_XYZ, tu utilise à la place D3DFVF_XYZRHW. Tu dois également leur ajouter un champs Rhw As Single qui indique le poid qu'aura chaque vertex dans le dégradé les liant entre eux.
Exemple en C ici

<hr width="100%" size="2" />Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Salut,
Bah oui
Y'a pleins de solutions, une simple est par exemple d'utiliser 4 vertex décrivant un rectangle, et tu y applique les textures que tu veux.
Pour construire ta texture, il suffit d'utiliser Texture.Lock, puis Unlock quand tu as fini...

<hr size="2" width="100%" />Julien.
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Merci pour ta réponse mmais j'y avais penser et le pb c'est qu'il faut gérer la position des 4 vertex a chaque rotation, translation et scalling du monde, ca prend du temps en plus. Sinon il y a l'iddée de la boite englobante mais la pareille il faudra gérer la position lors d'une rotation autour de l'axe horizontal (pas la peine lors d'une rotation autour d'un axe verticale car dans ce sens, le dégédé est invariant)

Je pense que c'est ce que je ferais faute de trouver mieux.

Damien
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Bah écoute si tu veux faire de la 3d et que tu t'arrête à ce genre de confrontation mathématique tu n'ira pas très loin...
Soit tu déclare tes vertex comme Transformed et tu les mets dans les coordonnées de la picture box, ils ne seront pas transformés avec le monde direct3d.
Soit tu les déclare en Position et tu leur applique la matrice inversée de World * View * Proj...

<hr width="100%" size="2" />Julien.
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Le problème n'est pas mathématique, c'est simplement que je n'ai pas envie que mon programme calcul sans arret les coordonnées de 4 points, surtout qu'ils ont un but uniquement estétique. Sinon ton idée de les  déclarer en transformed c'est quoi exactement ?
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Et bien comment déclare tu tes vertex ?
Sans doute quelque chose du style
Dim vert(3) as CustomVertex.PositionColoredTextured
non ?

A la place de Position, tu utilise Transformed
Dim vert(3) as CustomVertex.TransformedColoredTextured

Et ils ne seront pas projetés sur la surface de rendu, donc les coordonnées que tu leurs affecterons seront les coordonnées 2d auxquelles ils apparaitront dans la picturebox.

<hr width="100%" size="2" />Julien.
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Ba en fait je suis sur VB6
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Ok C'est nikel merci