(D3D) Create d3d_vertex_buffer_lock

This commit is contained in:
twinaphex 2014-09-13 19:33:06 +02:00
parent 1d142c3b58
commit f3cd7f8fe4
4 changed files with 26 additions and 8 deletions

View File

@ -104,6 +104,28 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
return buf;
}
void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf)
{
#ifdef _XBOX1
BYTE *buf;
#else
void *buf;
#endif
#if defined(_XBOX1)
buf = D3DVertexBuffer_Lock2(vertbuf, 0);
#elif defined(_XBOX360)
buf = D3DVertexBuffer_Lock(vertbuf, 0, 0, 0);
#else
vertbuf->Lock(0, sizeof(buf), &buf, 0);
#endif
if (!buf)
return NULL;
return buf;
}
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf)
{
if (buf)

View File

@ -26,6 +26,8 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
unsigned length, unsigned usage, unsigned fvf,
D3DPOOL pool, void *handle);
void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf);
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf);
LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,

View File

@ -455,8 +455,7 @@ void renderchain_set_vertices(void *data, Pass *pass,
vert[i].y += 0.5f;
}
void *verts;
pass->vertex_buf->Lock(0, sizeof(vert), &verts, 0);
void *verts = d3d_vertex_buffer_lock(pass->vertex_buf);
memcpy(verts, vert, sizeof(vert));
pass->vertex_buf->Unlock();
}

View File

@ -204,12 +204,7 @@ static void renderchain_set_vertices(void *data, unsigned pass, unsigned width,
vert[i].y += 0.5f / ((float)d3d->tex_h);
}
#if defined(_XBOX1)
BYTE *verts;
#elif defined(_XBOX360)
void *verts;
#endif
RD3DVertexBuffer_Lock(d3d->vertex_buf, 0, 0, &verts, 0);
void *verts = d3d_vertex_buffer_lock(d3d->vertex_buf);
memcpy(verts, vert, sizeof(vert));
RD3DVertexBuffer_Unlock(d3d->vertex_buf);
}