ich hab den fehler gefunden!
es lag an folgenden zeilen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
//Startvertex [4 Byte]
file.write(reinterpret_cast<char*>(&lpRange[i].VertexStart),4);
//Anzahl vertices [4 Byte]
file.write(reinterpret_cast<char*>(&lpRange[i].VertexCount),4);
//Start Indices [4 Bytes]
file.write(reinterpret_cast<char*>(&lpRange[i].FaceStart),4);
//Anzahl Indices [4 Bytes]
file.write(reinterpret_cast<char*>(&lpRange[i].FaceCoun),4);
|
so sollte es aussehen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//Startvertex [4 Byte]
DWORD VertexStart = lpRange[i].VertexStart;
file.write(reinterpret_cast<char*>(&VertexStart),4);
//Anzahl vertices [4 Byte]
DWORD VertexCount = lpRange[i].VertexCount;
file.write(reinterpret_cast<char*>(&VertexCount),4);
//Start Indices [4 Bytes]
DWORD FaceStart = lpRange[i].FaceStart * 3;
file.write(reinterpret_cast<char*>(&FaceStart),4);
//Anzahl Indices [4 Bytes]
DWORD faceCount = lpRange[i].FaceCount * 3;
file.write(reinterpret_cast<char*>(&faceCount),4);
|
also ich trage die Indices ein und nich die Counts. dadurch wird bei DrawIndexedPrimitive schonmal komplett falsch vb / ib genutzt.
dazu kommt, das folgendes anscheinend vom compiler nicht so interpretiert wird wie ich das will:
|
C-/C++-Quelltext
|
1
|
file.write(reinterpret_cast<char*>(&lpRange[i].VertexStart),4);
|
mit ner extra var gespeichert geht, vllt hätten auch klammern gereicht.
auf jeden fall klappts, danke an alle, die sich den kopf zerbrochen haben