mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
Stop doing nastly shit to OpenGL stream buffers.
Instead we keep the loaded vertices in CPU memory.
This commit is contained in:
@ -43,6 +43,8 @@ static size_t s_index_offset;
|
||||
VertexManager::VertexManager()
|
||||
{
|
||||
CreateDeviceObjects();
|
||||
CpuVBuffer.resize(MAX_VBUFFER_SIZE);
|
||||
CpuIBuffer.resize(MAX_IBUFFER_SIZE);
|
||||
}
|
||||
|
||||
VertexManager::~VertexManager()
|
||||
@ -81,14 +83,25 @@ void VertexManager::PrepareDrawBuffers(u32 stride)
|
||||
|
||||
void VertexManager::ResetBuffer(u32 stride)
|
||||
{
|
||||
auto buffer = s_vertexBuffer->Map(MAXVBUFFERSIZE, stride);
|
||||
s_pCurBufferPointer = s_pBaseBufferPointer = buffer.first;
|
||||
s_pEndBufferPointer = buffer.first + MAXVBUFFERSIZE;
|
||||
s_baseVertex = buffer.second / stride;
|
||||
if (CullAll)
|
||||
{
|
||||
// This buffer isn't getting sent to the GPU. Just allocate it on the cpu.
|
||||
s_pCurBufferPointer = s_pBaseBufferPointer = CpuVBuffer.data();
|
||||
s_pEndBufferPointer = s_pBaseBufferPointer + CpuVBuffer.size();
|
||||
|
||||
buffer = s_indexBuffer->Map(MAXIBUFFERSIZE * sizeof(u16));
|
||||
IndexGenerator::Start((u16*)buffer.first);
|
||||
s_index_offset = buffer.second;
|
||||
IndexGenerator::Start((u16*)CpuIBuffer.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
auto buffer = s_vertexBuffer->Map(MAXVBUFFERSIZE, stride);
|
||||
s_pCurBufferPointer = s_pBaseBufferPointer = buffer.first;
|
||||
s_pEndBufferPointer = buffer.first + MAXVBUFFERSIZE;
|
||||
s_baseVertex = buffer.second / stride;
|
||||
|
||||
buffer = s_indexBuffer->Map(MAXIBUFFERSIZE * sizeof(u16));
|
||||
IndexGenerator::Start((u16*)buffer.first);
|
||||
s_index_offset = buffer.second;
|
||||
}
|
||||
}
|
||||
|
||||
void VertexManager::Draw(u32 stride)
|
||||
|
Reference in New Issue
Block a user