Direct3d et vb6 ( textures)

Résolu
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018 - 5 janv. 2012 à 19:32
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018 - 6 janv. 2012 à 14:05
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 janv. 2012 à 13:21
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
3
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018
6 janv. 2012 à 14:05
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 janv. 2012 à 07:01
tu as un parametre colorKey dans l'appel a CreateTextureFromFileEx

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018
6 janv. 2012 à 07:26
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 janv. 2012 à 07:34
quel est ton code de chargement de la texture ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018
6 janv. 2012 à 13:03
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
0
yvesdudu Messages postés 48 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 3 juin 2018
6 janv. 2012 à 13:38
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
0
Rejoignez-nous