Hallo
Ich habe ein kleines Problem. Ich will ein picking realisieren. Dazu ist ein Mesh mit Vertex- und Indexbuffer notwendig. Ich habe die Geometrie bisher nur als Vertexbuffer der als Trianglelist gezeichnet wird (das muss auch so bleiben).
Nun kopiere ich den Vertexbuffer für das picking und möchte daraus ein mesh basteln. Vertexbuffer kann ich ja setzen, Indexbuffer generiere ich ganz simpel (0,1,2,3,4,5,6,7....) - dies entspricht dann der normalen trianglelist.
Nun will ich die buffer mit setIndexbufferdata setzen im Mesh, dabei fliegt leider eine AccessViolationException. Hat da jemand ne Idee?
Hier mein Code:
Mesh mesh = new Microsoft.DirectX.Direct3D.Mesh(buffer.Length / 3, buffer.Length,mMeshFlags.Dynamic, VertexFormats.PositionNormal, itsDevice);
CustomVertex.PositionNormal[] vertices = new CustomVertex.PositionNormal[buffer.Length];
for (int i = 0; i < buffer.Length; i++)
{
vertices[i] = new CustomVertex.PositionNormal(buffer[i].Position, buffer[i].Normal);
}
int[] indexBuffer = new int[buffer.Length];
for (int i = 0; i < buffer.Length; i++)
{
indexBuffer[i] = i;
}
mesh.SetVertexBufferData(vertices, LockFlags.None);
mesh.SetIndexBufferData(indexBuffer, LockFlags.None);