PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Managed Directx Zugriff auf Mesh Vertices


Godmode
2005-08-23, 10:19:50
Gibt es da eine gute, schnelle, einfache Möglichkeit um auf die Vertices in einem Mesh zugreifen zu können und diese gegebenfalls zu ändern?

Ich habe es mal über den VertexBuffer probiert, aber wie bekomme ich dann die Daten aus dem GraphicsStream raus?
Mit GraphicsStream.Read bekomme ich ein ByteArray, dieses müsste man jetzt irgendwie in ein Vertexformat casten können, oder?

using(VertexBuffer vb = mesh.VertexBuffer)
{
GraphicsStream data = vb.Lock(0, 0, LockFlags.None);
bytesRead = data.Read(byteArray, offset, count)
}

Godmode
2005-08-23, 10:41:12
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_m_Oct_2004/directx/direct3d/tasks/d3dbuffers/vertexbuffergraphicstream.asp
Habs schon gefunden, mit dem InternalDataPointer geht das.

//Cast the InternalDataPointer (a void pointer) to an array of verticies
PositionNormalTexVertex* vbArray = (PositionNormalTexVertex*) vbData.InternalDataPointer;
for(int i=0; i<100; i++)
{
//perform some operations on the data
vbArray[i].Tu0 = i;
vbArray[i].Tv0 = vbArray[i].Tu0 * 2;
}

//Unlock the buffer
vb.Unlock();
vb.Dispose();