diff options
| author | Tony Wasserka <neobrainx@gmail.com> | 2015-01-24 13:29:57 +0100 |
|---|---|---|
| committer | Tony Wasserka <neobrainx@gmail.com> | 2015-01-24 13:29:57 +0100 |
| commit | 43036af944e706ac38821561c2f3333a500e63f6 (patch) | |
| tree | 6c5b23ed4707d9af477143774dd86f9f9b9fe7be /Source/Core/VideoBackends/OGL/VertexManager.cpp | |
| parent | 4e9497cdb85ecbd088ca06fb501496aa0c8240a7 (diff) | |
| parent | 14baf038e70a598a6af1ce71719bb557425941f9 (diff) | |
Merge pull request #1812 from phire/real_zfreeze
Add proper zfreeze support.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/VertexManager.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp index 1a162b1cde..5b89e0507e 100644 --- a/Source/Core/VideoBackends/OGL/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp @@ -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; - - buffer = s_indexBuffer->Map(MAXIBUFFERSIZE * sizeof(u16)); - IndexGenerator::Start((u16*)buffer.first); - s_index_offset = buffer.second; + 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(); + + 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) |
