Fermer2
ExUtilisateur1Le 07/01/2011 à 15:54
Hello,

Je réalise une application D3D managée, dans lequel j'utilise des Mesh, des vertex-buffer et indices-buffer pour gagner en fluidité.

La particularité du code est que les vertex composant les Mesh doivent être crées environs 30 fois par secondes, vitesse à laquelle je recois l'information sur la profondeur.

Du coté rendu, pas de soucis: si les 15 Mesh sont calculés avant le rendu, j'obtiens plus de 1500 fps.
Mais dès que je veux reconstruire régulièrement les 15 Mesh, le framerate chute à 10 fps.
Avec un buffer de Mesh, le framerate augmente, mais le rendu n'est pas fluide puisque la création des vertex reste effectuée à 10 fps.

Le problème se situe donc dans la re-construction dynamique des Mesh, pour cela j'utilise quasiment le code donné sur le site de MSDN, à cette adresse.. Code que j'applique plusieur fois, car ma depthmap fait 640 X 480, et qu'un mesh ne contient qu'un nombre très limités de vertex.
Il ne s'agit pas d'un problème de lockflag, car je ne lock pas mes vertex et indices buffers, cela faisait chuter encore plus le framerate.

Ma question est la suivante :
Est-ce que, dans ce genre de cas, il est judicieux d'utiliser plusieurs theads, pour la construction des Mesh?
Si oui, de quel ordre de grandeur le nombre de thread doit-il être? 2-4-10 ou pourquoi pas encore plus? Je n'ai jamais vu de code très threadés alors je ne me rend pas compte.
Si non, auriez vous une autre idée, parce que je ne peux plus trop optimiser le code de création de mesh, celui-ci étant déja fort simple.

Merci d'avance.