Seite 1 von 1

[C++] memcpy

Verfasst: 21.12.2013, 17:21
von Raven280438
Hi,

ich habe ein Problem beim Befüllen eines VertexBuffers (DirectX11).

Folgender Code liefert bei memcpy eine unbehandelte Ausnahme:

Code: Alles auswählen

D3D11_MAPPED_SUBRESOURCE ms;
this->->GetDXContext()->Map(this->DX11VertexBuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &ms);
memcpy(ms.pData, this->pVertexData, sizeof(STEngine::Grafics::VERTEX) * this->VerticesInBuffer);
this->->GetDXContext()->Unmap(this->DX11VertexBuffer, NULL);
VerticesInBuffer ist (wie es soll) "3"

Deklariert ist pVertexData:

Code: Alles auswählen

this->pVertexData = new STEngine::Grafics::VERTEX[4000];

Woran kann das liegen?


Gruß

Re: [C++] memcpy

Verfasst: 21.12.2013, 18:23
von Raven280438
Hi,

ok hat sich erledigt ;)

Ich hatte den VertexBuffer mit

Code: Alles auswählen

vertexBufferDesc.Usage = D3D11_USAGE_DEFAULT;
erstellt, mit D3D11_USAGE_DYNAMIC gehts ;)



Gruß

Re: [C++] memcpy

Verfasst: 21.12.2013, 18:27
von Krishty
Der wirkliche Fehler ist, dass Microsoft immer so nervige Sachen wie Rückgabewerte einbaut. Wann schaffen die es endlich mal, Funktionen zu schreiben, die immer funktionieren?!

Re: [C++] memcpy

Verfasst: 21.12.2013, 19:09
von RazorX
Ich kann dir nur nahe legen Direct3D mit dem Flag D3D11_CREATE_DEVICE_DEBUG zu erstellen, dadurch kriegst du für fehlschlagende Funktionen eine meist sehr detaillierte Beschreibung ins Ausgabefenster. Außerdem solltest du auf CPU-GPU-Sync-Points aufpassen, wenn du mit dynamischen VertexBuffern arbeitest. Das Thema wurde hier sehr gut angegangen.