Laden...

Managed DirectX9: Vertexbuffer -> Mesh für intersection (picking) liefert AccessViolationException

Erstellt von MrHiggins vor 12 Jahren Letzter Beitrag vor 12 Jahren 631 Views
M
MrHiggins Themenstarter:in
29 Beiträge seit 2011
vor 12 Jahren
Managed DirectX9: Vertexbuffer -> Mesh für intersection (picking) liefert AccessViolationException

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);