[C++] memcpy

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Raven280438
Establishment
Beiträge: 140
Registriert: 03.10.2010, 20:14

[C++] memcpy

Beitrag 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ß
Raven280438
Establishment
Beiträge: 140
Registriert: 03.10.2010, 20:14

Re: [C++] memcpy

Beitrag 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ß
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [C++] memcpy

Beitrag 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?!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
RazorX
Establishment
Beiträge: 156
Registriert: 23.12.2010, 14:13
Kontaktdaten:

Re: [C++] memcpy

Beitrag 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.
Antworten