Domanda

Ho bisogno di fare una mesh 3D DirectX in fase di esecuzione utilizzando Managed DirectX da C #. Non sono stato in grado di individuare tutte le informazioni su come fare questo.

  1. No, non posso utilizzare un programma modellatore 3D per fare i miei oggetti. Devono essere proprio di dimensioni e di forma, e io non ho alcun delle dimensioni o la forma informazioni fino a runtime.
  2. No, non posso costruire il modello dalla capacità di maglia DirectX esistenti. (Un semplice esempio: DirectX sarebbe consentono di modellare facilmente una matita utilizzando una maglia cono e una maglia cilindri Naturalmente, si deve portare circa due maglie per la matita, non uno solo, e correttamente la posizione e orientare ogni Ma.. non può anche fare un modello di una spaccatura matita a metà longitudinalmente in quanto non v'è alcun mezzo cilindro né maglia cono mezzo disponibile.)
  3. In fase di runtime, ho tutti i vertici già calcolati e so che quelli per la connessione a fare i triangoli necessari.
  4. Tutto quello che serve è un colore solido. Non ho bisogno di texture map.

Si può ottenere una maglia di una sfera utilizzando questa chiamata DirectX:
Mesh sphere = Mesh.Sphere(device, sphereRadius, sphereSlices, sphereStacks);
Questa rete è costruito in fase di esecuzione.

Quello che ho bisogno di sapere è come fare una funzione simile:
Mesh shape = MakeCustomMesh(device, vertexlist, trianglelist);
dove le due liste potrebbero essere qualsiasi contenitore / formato adatto.

Se qualcuno mi può puntare a DirectX codice di esempio gestito (C #), anche se è solo costruisce una maglia da 3 triangoli hardcoded, che sarebbe un grande vantaggio.

È stato utile?

Soluzione

C'è un po 'di codice di esempio che mostra come fare questo su MDXInfo . Questo crea una rete con più sottoinsiemi -. Se non hai bisogno di questo, è ancora più facile

In pratica, basta creare la mesh:

Mesh mesh = new Mesh(numIndices, numVerticess, MeshFlags.Managed, CustomVertex.PositionColored.Format /* you'll need to set this */ , device); 

Quindi, si può afferrare il buffer maglia vertice e index buffer, e sovrascrive, utilizzando:

IndexBuffer indices = mesh.IndexBuffer;
VertexBuffer vertices = mesh.VertexBuffer;

Poi, compilare indici e vertici appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top