Gast
2009-05-11, 21:59:48
Ich habe meine 3D-Objecte in 2 Dateien verteillt.
1. Datei VertexBuffer (funktioniert einwandfrei).
2. Datei Index Buffer (Kann nicht eingelessen werden).
mit Hexadecimaleditor habe ich festgestellt, dass die Datei in ordnung ist.
Die Werte lassen sich einwandfrei identifizierenen.
Mein Quelltext ist folgender.
Indfile=_open(Indfilename,_O_RDONLY);
if(MainCl->pD3DDev->CreateIndexBuffer((3*AnzInd)*sizeof(UINT),0,D3DFMT_INDEX16,D3DPOOL_MANAGED,&IndexBuffer,NULL)==D3D_OK)
{
WORD z;
_3DOT_LogWr("IndexBuffer erstellt !",1);
IndexBuffer->Lock(0,0,(void**)&Index,D3DLOCK_NOSYSLOCK);
for(z=0;z<3*AnzInd;z++)
_read(Indfile,&Index[z],sizeof(WORD));
IndexBuffer->Unlock();
_3DOT_LogWr("Indexbuffer gefüllt.",1);
_close(Indfile);
}
Habe auch schon probiert die Werte in einem Zeiger entsprechender Grösse zu übergeben, aber dies funktioniert auch nicht richtig.
Mit fopen und fread funktioniert es erst recht nicht, weill mir diese Funktionen sämtliche Zeigervariablen in der Funktion zerstörren.
Nach einem 2. Aufruf von fread sogar der Zeiger für die Datei.
Weiss jemand einen Rat.
1. Datei VertexBuffer (funktioniert einwandfrei).
2. Datei Index Buffer (Kann nicht eingelessen werden).
mit Hexadecimaleditor habe ich festgestellt, dass die Datei in ordnung ist.
Die Werte lassen sich einwandfrei identifizierenen.
Mein Quelltext ist folgender.
Indfile=_open(Indfilename,_O_RDONLY);
if(MainCl->pD3DDev->CreateIndexBuffer((3*AnzInd)*sizeof(UINT),0,D3DFMT_INDEX16,D3DPOOL_MANAGED,&IndexBuffer,NULL)==D3D_OK)
{
WORD z;
_3DOT_LogWr("IndexBuffer erstellt !",1);
IndexBuffer->Lock(0,0,(void**)&Index,D3DLOCK_NOSYSLOCK);
for(z=0;z<3*AnzInd;z++)
_read(Indfile,&Index[z],sizeof(WORD));
IndexBuffer->Unlock();
_3DOT_LogWr("Indexbuffer gefüllt.",1);
_close(Indfile);
}
Habe auch schon probiert die Werte in einem Zeiger entsprechender Grösse zu übergeben, aber dies funktioniert auch nicht richtig.
Mit fopen und fread funktioniert es erst recht nicht, weill mir diese Funktionen sämtliche Zeigervariablen in der Funktion zerstörren.
Nach einem 2. Aufruf von fread sogar der Zeiger für die Datei.
Weiss jemand einen Rat.