hallo, ich versuche gerade drei vertices in meinen Buffer zu kopieren, die Vertexbufferklasse sieht so aus(ich weiß, noch nicht wirklich viel
):
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include "global.h"
CVertexBuffer::CVertexBuffer(LPDIRECT3DDEVICE9 pDevice, int pSize, DWORD pFVF, int pVertexSize)
{
//VertexBuffer erzeugen
pDevice->CreateVertexBuffer( pSize,
0,
pFVF,
D3DPOOL_MANAGED,
&VertexBuffer,
NULL);
//Werte speichern
VertexSize = pVertexSize;
PrimitiveCount = pSize/VertexSize;
}
void CVertexBuffer::Lock(void* pLockedArea)
{
VertexBuffer->Lock(0, 0, (void**)&pLockedArea, 0);
}
void CVertexBuffer::Unlock()
{
HRESULT test = VertexBuffer->Unlock();
}
|
Das Daten reinkopieren sieht jetzt so aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
SVertex Vertices[3];
Vertices[0].vPosition = D3DXVECTOR3(0.0f, 1.0f, 0.0f);
Vertices[1].vPosition = D3DXVECTOR3(1.0f, -1.0f, 0.0f);
Vertices[2].vPosition = D3DXVECTOR3(-1.0f, -1.0f, 0.0f);
Vertices[0].color = D3DCOLOR_XRGB(255, 0, 0);
Vertices[1].color = D3DCOLOR_XRGB(0, 255, 0);
Vertices[2].color = D3DCOLOR_XRGB(0, 0, 255);
void* LockedArea = 0;
CVertexBuffer VertexBuffer(d3d.GetDevice(), sizeof(Vertices), D3DFVF_XYZ | D3DFVF_DIFFUSE, sizeof(SVertex));
VertexBuffer.Lock(LockedArea);
memcpy(LockedArea, Vertices, sizeof(Vertices));
VertexBuffer.Unlock();
|
wenn ich das jetzt ausführe, bekomme ich eine Zugriffsverletzung bei memcpy, das heißt wohl ich habe einen ungültigen zeiger oder schreibe zu weit, sehe ich das falsch?
habt ihr ne idee woran das liegt?