Only bind once per render batch

This commit is contained in:
Atlante45 2016-01-19 18:53:18 -08:00
parent 9e8a3f19e9
commit 8d4dab19c7

View file

@ -137,7 +137,7 @@ void GLBackend::TransformStageState::transfer(const Batch& batch) const {
bufferData.resize(byteSize); bufferData.resize(byteSize);
memcpy(bufferData.data(), batch._objects.data(), byteSize); memcpy(bufferData.data(), batch._objects.data(), byteSize);
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, TRANSFORM_OBJECT_SLOT, _objectBuffer); glBindBuffer(GL_SHADER_STORAGE_BUFFER, _objectBuffer);
glBufferData(GL_SHADER_STORAGE_BUFFER, bufferData.size(), bufferData.data(), GL_DYNAMIC_DRAW); glBufferData(GL_SHADER_STORAGE_BUFFER, bufferData.size(), bufferData.data(), GL_DYNAMIC_DRAW);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0); glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
} }
@ -157,6 +157,8 @@ void GLBackend::TransformStageState::transfer(const Batch& batch) const {
glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0);
} }
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, TRANSFORM_OBJECT_SLOT, _objectBuffer);
CHECK_GL_ERROR(); CHECK_GL_ERROR();
} }
@ -176,8 +178,6 @@ void GLBackend::TransformStageState::update(size_t commandIndex, const StereoSta
_cameraBuffer, offset, sizeof(Backend::TransformCamera)); _cameraBuffer, offset, sizeof(Backend::TransformCamera));
} }
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, TRANSFORM_OBJECT_SLOT, _objectBuffer);
(void)CHECK_GL_ERROR(); (void)CHECK_GL_ERROR();
} }