(view as text)
diff --git a/Source/Core/VideoBackends/D3D/VertexManager.cpp b/Source/Core/VideoBackends/D3D/VertexManager.cpp
index 75ca01a..3ded4e7 100644
--- a/Source/Core/VideoBackends/D3D/VertexManager.cpp
+++ b/Source/Core/VideoBackends/D3D/VertexManager.cpp
@@ -85,11 +85,11 @@ VertexManager::~VertexManager()
DestroyDeviceObjects();
}
-void VertexManager::PrepareDrawBuffers()
+void VertexManager::PrepareDrawBuffers(u32 stride)
{
D3D11_MAPPED_SUBRESOURCE map;
- UINT vSize = UINT(s_pCurBufferPointer - s_pBaseBufferPointer);
+ UINT vSize = UINT(IndexGenerator::GetNumVerts() * stride);
D3D11_MAP MapType = D3D11_MAP_WRITE_NO_OVERWRITE;
if (m_vertex_buffer_cursor + vSize >= VBUFFER_SIZE)
{
@@ -101,7 +101,7 @@ void VertexManager::PrepareDrawBuffers()
D3D::context->Map(m_vertex_buffers[m_current_vertex_buffer], 0, MapType, 0, &map);
- memcpy((u8*)map.pData + m_vertex_buffer_cursor, s_pBaseBufferPointer, vSize);
+ memcpy((u8*)map.pData + m_vertex_buffer_cursor, GetVertexBuffer(), vSize);
D3D::context->Unmap(m_vertex_buffers[m_current_vertex_buffer], 0);
m_vertex_draw_offset = m_vertex_buffer_cursor;
m_vertex_buffer_cursor += vSize;
@@ -208,8 +208,8 @@ void VertexManager::vFlush()
GFX_DEBUGGER_PAUSE_LOG_AT(NEXT_ERROR,true,{printf("Fail to set pixel shader\n");});
return;
}
- PrepareDrawBuffers();
unsigned int stride = g_nativeVertexFmt->GetVertexStride();
+ PrepareDrawBuffers(stride);
g_nativeVertexFmt->SetupVertexPointers();
g_renderer->ApplyState(useDstAlpha);
diff --git a/Source/Core/VideoBackends/D3D/VertexManager.h b/Source/Core/VideoBackends/D3D/VertexManager.h
index 9440c73..9ed4fbc 100644
--- a/Source/Core/VideoBackends/D3D/VertexManager.h
+++ b/Source/Core/VideoBackends/D3D/VertexManager.h
@@ -24,7 +24,7 @@ public:
private:
- void PrepareDrawBuffers();
+ void PrepareDrawBuffers(u32 stride);
void Draw(u32 stride);
// temp
void vFlush();