Direct3D8 Vertex buffer...

NoRabbit Messages postés 224 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 30 mars 2009 - 17 août 2003 à 17:49
NoRabbit Messages postés 224 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 30 mars 2009 - 17 août 2003 à 21:43
hello,

j'aimerais savoir si on peut modifier les coordonnées d'une texture d'un "vertex buffer" et si oui, comment.

et une autre question :

faut il obligatoirement ajouter une fonction qui calcule quel objet doit être rendu avant un autre afin de ne pas avoir d'objet apparaissans devant d'autres situés devant lui ? ou y a-t-il une fonction toute faite pour ça ?

merci.

.:. NoRabbit .:.

4 réponses

Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
17 août 2003 à 18:20
Pour la premiere question, il faut que tu crée des "custom" vertex avec les paramètres tu As Single et tv As Single (D3DFVF_TEX1), ensuite il suffit de prendre régulièrement les vertex d'un vertexbuffer avec la fonction D3DVertexBuffer8GetData dans une liste de "custom" vertex, changer les coordonnées tu et tv puis renvoyer le résultat dans ton vertexbuffer avec D3DVertexBuffer8SetData

Pour les objets, non pas besoin de fonction : le Zbuffer s'occupe de tout. si tu as un nanard avec le zbuffer, mets un un a la place d'un zéro lors du calcul de projection :
3DXMatrixPerspectiveFovLH matProj, FOV, Aspect, 0, Fond
ne marche pas alors que
3DXMatrixPerspectiveFovLH matProj, FOV, Aspect, 1, Fond
fonctionne
0
NoRabbit Messages postés 224 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 30 mars 2009
17 août 2003 à 18:54
merci, mais j'ai toujours un problème de profondeur.

en fait, je n'utilise pas de vertex buffer pour le moment.
Je crée pour chaque "objets" une surface plane carrée en délimitant 4 points et en y inscrivant les coordonnées de la texture pour ensuite l'afficher, et ce à chaque rendu.

en tournant autour de mes objets (ayant une profondeur différente), je remarque que les objets que je demande d'afficher en dernier sont dessinés au-dessus des autres, même lorsqu'ils se trouvent derrière ceux-ci.

j'ai modifé comme tu me l'as dis le "3DXMatrixPerspectiveFovLH..." avec toutes sortes de valeurs (0 ; 1 ; 0.1 ; ...) et ça ne fonctionne toujours pas.

Peut être est-ce parce que je n'utilise pas de vertex buffer ?(mais ça ne me semble pas logique)

voilà, j'hespère que quelqu'un pourra me dire ce qu'il faut faire, ce que peut-être je devrais faire ou ce que je ne devrais pas faire... bref, j'ai besoin d'aide :-)

merci d'avance.

.:. NoRabbit .:.
0
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
17 août 2003 à 20:49
a mon avis c'est toujours un problème de zbuffer.
essaye de modifier son intialisation :
.SetRenderState D3DRS_ZWRITEENABLE, 1
.SetRenderState D3DRS_ZENABLE, D3DZB_USEW
.SetRenderState D3DRS_ZFUNC, D3DCMP_LESSEQUAL
C'est ce que j'utilise dans une de mes sources 3D. j'ai juste mis 4 mois pour fixer le problème de zbuffer (tu peux l'interpréter soi comme un "proger est un gros nullos" ou comme "ok je vois ce qui m'attend" ;p )

J'ai aussi activé ce truc-là, je sais pas trop.... ça peut aider, peut-être ?
.SetRenderState D3DRS_STENCILENABLE, 1
.SetRenderState D3DRS_STENCILFUNC, D3DCMP_LESS

Pour nettoyer :
.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, 0, 1, 32768

Bon sinon, si tu utilise des "DrawPrimitiveUP" au lieu de "DrawPrimitive", en fait ça ne change pas grand chose au problème de zbuffer .... si ce n'est que dx8 travaille plus vite avec un bon vertexbuffer affiché via drawprimitive (d'après expérimentation perso)
0
NoRabbit Messages postés 224 Date d'inscription samedi 26 juillet 2003 Statut Membre Dernière intervention 30 mars 2009
17 août 2003 à 21:43
c'est sympa, mais aucune des modifications ne fonctionne :(

ce qui m'énerve, c'est que l'exemple sur lequel je me suis basé fonctionne parfaitement !
en plus, chez moi, il y a des moments où le carré semble passer au-dessus de l'autre mais revient directement derrière à l'instant suivant... ?!?

en tous cas, c'est très gentil de t'être penché sur mon problème, je crois que je vais tout réécrire depuis le début et on verra bien !

.:. NoRabbit .:.
0
Rejoignez-nous