Pregunta

Necesito hacer una DirectX 3D de malla en tiempo de ejecución el uso de Managed DirectX desde C#.No he sido capaz de localizar cualquier información sobre cómo hacer esto.

  1. No, yo no puedo usar un modelador 3D programa para hacer mis objetos.Deben estar precisamente tamaño y forma, y no tengo el tamaño o la forma de la información hasta el tiempo de ejecución.
  2. No, yo no se puede construir el modelo a partir de los actuales DirectX malla de capacidades.(Un ejemplo simple:DirectX le permiten fácilmente el modelo de un lápiz por el uso de un cono de malla y un cilindro de malla.Por supuesto, usted tiene que llevar alrededor de dos mallas de su lápiz, no sólo uno, y correctamente la posición y orientar a cada uno.Pero ni siquiera se puede hacer un modelo de un lápiz dividida longitudinalmente por la mitad ya que no hay medio cilindro ni la mitad de cono de malla proporcionan.)
  3. En tiempo de ejecución, tengo todos los vértices ya calculada y saber que conectar a hacer los triángulos.
  4. Todo lo que necesito es un color sólido.No necesito mapa de textura.

Uno puede obtener una malla de una esfera usando esta DirectX llame al:
Mesh sphere = Mesh.Sphere(device, sphereRadius, sphereSlices, sphereStacks);
Esta malla está construido en tiempo de ejecución.

Lo que necesito saber es cómo hacer una función similar:
Mesh shape = MakeCustomMesh(device, vertexlist, trianglelist);
donde las dos listas que podría ser cualquier recipiente adecuado/formato.

Si alguien puede, me managed DirectX (C#) código de ejemplo, incluso si sólo se construye una malla de 3 codificado triángulos, que sería un gran beneficio.

¿Fue útil?

Solución

Hay un código de ejemplo que muestra cómo hacer esto en MDXInfo . Esto crea una malla con múltiples subconjuntos -. Si usted no necesita eso, es aún más fácil

Básicamente, que acaba de crear la malla:

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

A continuación, se puede agarrar el tampón de vértice de malla y tampón índice, y sobrescríbalo, usando:

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

A continuación, rellenar los índices y vértices adecuadamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top