|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
tbVector3* GetVPos(tbVertexBuffer* vb)
{
void* pVertex;
// Ich kenne die genauen Funktionsnamen nicht auswendig...
tbVector3* pVPos = new tbVector3[vb->GetMaxVerticien()];
for(int i = 0; i<vb->GetMaxVerticien(); i++)
{
vb->GetVertex(i, &pVertex);
// Hier das Problem! Wie bekomme ich aus der
// Struktur eines Vertex nur die Position?
pVPos[i] = *((tbVector3*)(pVertex));
}
// ...
return pVPos;
}
|
Das geht, da die Position immer am Anfang steht (normalerweise zumindest). Allerdings hast Du da noch einen Fehler drin, denn GetVertex erwartet als zweiten Parameter keinen void**, sondern einen void*-Zeiger auf einen Speicherbereich, wo der Vertex reinkopiert werden soll.
Also müsste es ungefähr so aussehen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
tbVector3* GetVPos(tbVertexBuffer* vb)
{
char* pTemp = new char[vb->GetVertexSize()];
tbVector3* pVPos = new tbVector3[vb->GetMaxVertices()];
for(int i = 0; i < vb->GetMaxVertices(); i++)
{
vb->GetVertex(i, pTemp);
pVPos[i] = *((tbVector3*)(pTemp));
}
delete[] pTemp;
return pVPos;
}
|
Und noch was:
Den Begriff "Verticien" gibt es nicht. Entweder heißt es "Vertizes" oder "Vertices", aber nicht "Verticien". Und demnach gibt es auch "tbVertexBuffer::GetMaxVerticien" nicht.