3D - SetMeshData

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

3D - SetMeshData

Message par Progi1984 »

Actuellement, on peut utiliser une mémoire, un tableau, ou des datas pour les données à insérer dans le mesh.

Ma suggestion : gérer les listes chaînées.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ce n'est pas possible, les index que tu indiques pour les triangles sont des index sur un tableau de vertices, comment veux-tu t'indexer sur une liste chainée ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Et le ListIndex() ?
Anonyme

Message par Anonyme »

donc , si j'ai pigé, cela n'est pas possible ?

Code : Tout sélectionner

Structure VECTOR3
  x.f:y.f:z.f
EndStructure

NewList Vertice.VECTOR3()

SetMeshData(0,#PB_Mesh_Vertex, @Vertice(),SizeOf(VECTOR3)*Nbr_Vertices)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Cpl.Bator a écrit :donc , si j'ai pigé, cela n'est pas possible ?

Code : Tout sélectionner

Structure VECTOR3
  x.f:y.f:z.f
EndStructure

NewList Vertice.VECTOR3()

SetMeshData(0,#PB_Mesh_Vertex, @Vertice(),SizeOf(VECTOR3)*Nbr_Vertices)
Exactement.

Déjà ça ne sert à rien de multiplier par SizeOf(VECTOR3), puisque #PB_Mesh_Vertex permet déjà de dire qu'il faudra 3 floats par vertex.

Et il faut voir SetMeshData() comme un CopyMemory() pour lequel tu indiques l'adresse de début et la longueur à copier (nombre de vertices)

Tu comprendras qu'une liste chainée ne se prête pas à ce genre de manoeuvre.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message par Guimauve »

Rien ne vous empeche de travailler par copie. J'explique, si vous ne savez pas combien de vertex il va y avoir à l'avanve et placer les dans une liste chainé et dès que la création de la mesh est finie vous faîtes un truc du genre :

Code : Tout sélectionner

Dim Vertex(CountList(ListeChainee()))

ForEach ListeChainee()
  
  ListeChainee()\x = Vertex(Index)\x
  ListeChainee()\y = Vertex(Index)\y
  ListeChainee()\z = Vertex(Index)\z
  Index + 1

Next
C'est sur que ce n'est pas le plus rapide, mais c'est qui a de plus efficace.

A+
Guimauve
Répondre