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);
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);
glBindBuffer(GL_SHADER_STORAGE_BUFFER, 0);
}
@ -157,6 +157,8 @@ void GLBackend::TransformStageState::transfer(const Batch& batch) const {
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, TRANSFORM_OBJECT_SLOT, _objectBuffer);
CHECK_GL_ERROR();
}
@ -176,8 +178,6 @@ void GLBackend::TransformStageState::update(size_t commandIndex, const StereoSta
_cameraBuffer, offset, sizeof(Backend::TransformCamera));
}
glBindBufferBase(GL_SHADER_STORAGE_BUFFER, TRANSFORM_OBJECT_SLOT, _objectBuffer);
(void)CHECK_GL_ERROR();
}