CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[DirectX] setStreamSource() : paramètres

saleGauss
saleGauss
Niveau 9
01 décembre 2007 à 22:05:17

Bonjour à tous !

Voila, j´ai une petite question bete en directX (encore!).
Quand je dessine avec des VB/IB, j´utilise la methode SetStreamSource() et je passe comme param :
-0
-mon vertexBuffer construit à la main
-0
-une valeur ou je comprend pas ce que je dois mettre

La doc directX me précise cela :
StreamNumber
[in] Specifies the data stream, in the range from 0 to the maximum number of streams -1.
pStreamData
[in] Pointer to an IDirect3DVertexBuffer9 interface, representing the vertex buffer to bind to the specified data stream.
OffsetInBytes
[in] Offset from the beginning of the stream to the beginning of the vertex data, in bytes. To find out if the device supports stream offsets, see the D3DDEVCAPS2_STREAMOFFSET constant in D3DDEVCAPS2.
Stride
[in] Stride of the component, in bytes. See Remarks.
Return Value

If the method succeeds, the return value is D3D_OK.

If the method fails, the return value can be D3DERR_INVALIDCALL.

Remarks

When a flexible vertex format (FVF) vertex shader is used, the stride of the vertex stream must match the vertex size, computed from the FVF. When a declaration is used, the stride should be greater than or equal to the stream size computed from the declaration.

When an application no longer holds a references to this interface, the interface will automatically be freed.

Le soucis c´est que je pige toujours pas ce que je dois mettre comme 4eme paramètre (je ne suis pas sur de comprendre la phrase).

Moi j´utilise des FVF (Flexible Vertex Format).

Au depart je mettais comme paramètre nbrVertices * sizeof(CUSTOMVERTEX) mais comme ca faisait planter/était très moche, j´ai essayé de tatonner.

Par exemple, pour un cube {8 vertices, 36 index dans un IB}, la valeur 32 me permet de bien visualiser mon cube.

Mais alors, pourquoi ? J´en sais rien.
J´ai essayé de comprendre mais rien.
Pourquoi 32?
32 = 16*2 = 8*4 = ... ?
J´arrive à rien trouver en fonction de nbrVertices et nbrIndices.

Bon, j´ai bien compris que sizeof(CUSTOMVERTEX) ne peut pas apparaitre dans l´expression de ce param, car sizeof(CUSTOM) = 36, ce qui depasse deja ma valeur de 32 qui semble bien marcher pour mon cube.

Voila, si vous avez des pistes, des idées, c´est sympa.

Ha oui, j´ai mis 2 zeros mais c´est sans aucune certitude.

J´ai du mal à comprendre ce que je dois lui passer à cette fonction , à part le vertexBuffer en 3eme position bien sur.

Voilou, bonne soirée.

saleGauss
saleGauss
Niveau 9
01 décembre 2007 à 22:07:18

pardon, le vertexBuffer est en 2eme position

saleGauss
saleGauss
Niveau 9
03 décembre 2007 à 20:55:38

personne pour m´éclerer sur les param de cette fonction ?

Bon, j´ai bien l´impression que le paramètre que je devrais mettre, logiquement, c´est la taille d´un element du VB, donc un sizeof(CUSTOMVERTEX; mais ca me donnera alors 36 (poids de ma structure) et la valeur qui semble fonctionner est 32 (36 deforme ma géométrie).

Je pense que je n´ai pas du remplir correctement mon VB, j´ai du decaler mes objets sur 4 bites.

Je vous tiens au courant (meme si à part LGV y´a pas bcp de codeurs DirectX sur ce fofo :d)
Bye everybody !

Fvirtman
Fvirtman
Niveau 10
03 décembre 2007 à 22:47:59

J´aimerais bien t´aider, mais en ce moment, j´ai tellement pas de temps pour programmer pour moi que je suis au point mort niveau projets persos. (mais je me déchire au boulot, en ce moment, je refais une chiée d´algo de décompression au bit pres, je regarde dans la matrice, lol !)

saleGauss
saleGauss
Niveau 9
04 décembre 2007 à 08:52:02

Pas de soucis Firtman, je sais que si tu pouvais m´aider tu le ferais.
Et puis je sais que ton domaine à toi (dans la 3D) c´est plutot openGl.
De toute facon je vais bien finir par y arriver ! :D
Mais je pense etre à peu près certain que le param que je dois mettre c´est la taille de ma structure CUSTOMVERTEX car je dois lui mettre la taille d´un element de mon vertex buffer.
Si je dois donc mettre 32 au lieu de 36, c´est que j´ai du decaller des infos des mon vertex buffer.
Il va encore falloir que je mette les mains dans le camboui pour comprendre ce qui se passe exactement ! :D

Bon courage pour tes algos au taf, ca doit pas etre evident.
Halala, ca doit y aller sur la lecture en binaire de fichiers avec fopen()

Aller, je vais trouver mon bug et je reviendrais poster pour vous dire quel joli petit papillon était venu s´y glisser ! :-)
Ce qui est sur, c´est que dès que j´arrive à faire marcher ca, j´écris un tuto sur le fonctionnement de VB/IB avec DirectX, avec des exemples asser "chiés"; parce qu´on ne trouve sur le net que des exemples triviaux.

Bon, en attendant, je retourne à mes maths !
Enjoy !

kufa
kufa
Niveau 9
04 décembre 2007 à 10:54:00

@salegausse: oui on est tres peu de coders dx ici il semble.
Enfin bon, pour revenir a ta question initiale, oui le stride doit correspondre au moins a la taille d un de tes customvertex. Elle resemble a quoi ta declaration de ce type et ton call a setfvf?
N´oublie pas qu´avec un FVF l´ordre et le type des donnees est important. En general j´utiliserais plus un SetVertexDeclaration, qui est plus puissant/utile/flexible imo.

saleGauss
saleGauss
Niveau 9
04 décembre 2007 à 23:35:14

Il n´y a pas de soucis concernant l´ordre des données de ma structure CUSTOMVERTEX et de mon Setfvf : exactement le meme ordre :

  1. define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1)

et

struct CUSTOMVERTEX
{

float x, y, z;
float nx, ny, nz;
DWORD color;
float tu, tv; // Texture coordinates

};

Enfin, ca m´a l´air bon du moins.

Je pense que ca doit venir du moment où je rentre mes vertices avec le pied dans mon VB, en tassant très fort !. .. :D
Je vais essayer de voir le soucis, mais pour l´instant je galère...

Si tu as d´autres idées, n´hésite pas, et merci pour ton post au fait.
Bonne soirée all !

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment