Direct3d et vb6 ( textures) [Résolu]

Signaler
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018
-
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018
-
Bonjour,
Je suis en train de développer un jeu en direct3D sous VB6 et ma question est la suivante.
Je plaque des textures ( images bmp) sur des triangles mais comment utiliser la couleur de transparence si par exemple mes bmp sont en fond noir.
Pour éviter qu'au déplacement d'un objet celui ci masque les autres de toute sa taille rectangulaire et non par le contour de l'image de la texture.
Dois je agir comme avec directdraw de DX8 et la couleur de transparence.
Mais alors comment dois je coder cela sous D3D.
Merci pour votre éventuelle aide.

PS:je suis dans le 13 et si quelqu'un est interéssé par une collaboration afin de partager notre passion , merci de laisser un message sur ce forum.

7 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Comme je te l'ai indiqué, utiliser CreateTextureFromFileEx
qui propose une ColorKey

HRESULT CreateTextureFromFileEx( LPDIRECT3DDEVICE9 pDevice, LPCTSTR pSrcFile, UINT Width, UINT Height, UINT MipLevels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, DWORD Filter, DWORD MipFilter, D3DCOLOR ColorKey, D3DXIMAGE_INFO *pSrcInfo, PALETTEENTRY *pPalette, LPDIRECT3DTEXTURE9 *ppTexture );


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Je suis arrivé au bout du tunnel , j'ai réussi à faire ce que je voulais avec mes textures.
Encore merci pour ta précieuse aide
Cordialement
yves
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
tu as un parametre colorKey dans l'appel a CreateTextureFromFileEx

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Bonjour et merci pour ta réponse.
N'ayant presque aucune documentation à ce sujet autre que celles que j'ai trouvée dans les différents forums , pourrait tu en 2 ou 3 lignes de code m'éclairer sur la manière de proçéder afin de coder une couleur de transparence.
Bien sur je vais chercher de mon coté.
Encore merci.
Cordialement
Yves
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
quel est ton code de chargement de la texture ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Re bonjour,
Voici les lignes de code pour le chargement et l'utilisation de la texture:
Chargement de la texture:
Set texture =  Pd3dx.CreateTextureFromFile(device, Ppath & "image.bmp") ' création de la texture

application de la texture:
Vertexobjet1(0)  = creationpoint(-6, 15, 50, RGB(255, 255, 255), 1, 0, 1) ' boite 1
Vertexobjet1(1) = creationpoint(-6, 30, 50, RGB(255, 255, 255), 1, 0, 0)
Vertexobjet1(2) = creationpoint(6, 15, 50, RGB(255, 255, 255), 1, 1, 1)
Vertexobjet1(3) = creationpoint(6, 15, 50, RGB(255, 255, 255), 1, 1, 1) ' boite 1
Vertexobjet1(4) = creationpoint(-6, 30, 50, RGB(255, 255, 255), 1, 0, 0)
Vertexobjet1(5) = creationpoint(6, 30, 50, RGB(255, 255, 255), 1, 1, 0)

Affichage de l'objet dans la scène:
device.SetTexture 0, texture ' les textures de la boite
device.DrawPrimitiveUP D3DPT_TRIANGLELIST, 1, Vertexobjet1(0), Len(Vertexobjet1(0)) ' c'est la boite 1
device.DrawPrimitiveUP D3DPT_TRIANGLELIST, 1, Vertexobjet1(3), Len(Vertexobjet1(0)) ' c'est la boite 1

Merci pour ton aide
Amicalement
Yves
Messages postés
48
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
3 juin 2018

Ok entre temps j'ai trouvé sur le forum un bout de code que j'ai appliqué à mon programme mais sans succès.
Set texture = Pd3dx.CreateTextureFromFileEx(device, ppath & "image.bmp", 128, 128, 1, 0, D3DFMT_DXT1, D3DPOOL_MANAGED, D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, &H0, ByVal 0, ByVal 0)

Puis dans le rendu de la scène:
device.SetRenderState D3DRS_ALPHABLENDENABLE, 1
device.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA

device.SetTexture 0, texture ' les textures de la boite
device.DrawPrimitiveUP D3DPT_TRIANGLELIST, 1, Vertexobjet1(0), Len(Vertexobjet1(0)) ' c'est la boite 1
device.DrawPrimitiveUP D3DPT_TRIANGLELIST, 1, Vertexobjet1(3), Len(Vertexobjet1(0)) ' c'est la boite 1

aurais-je oublié quelque chose ou alors ce code n'est pas correct?.
Je continu mes tests
Encore merci