mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-11 21:58:31 +09:00
[Fix] (MG_Backend/DirectGLES): Ensure other methods for buffer syncing available.
This commit is contained in:
@@ -42,13 +42,14 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
|||||||
stateBufferObject.get());
|
stateBufferObject.get());
|
||||||
|
|
||||||
Bool needsRegeneration =
|
Bool needsRegeneration =
|
||||||
!m_isInitialized || bufferSize > m_prevBufferSize || bufferSize > m_prevBufferSize * 2;
|
!m_isInitialized || bufferSize > m_prevBufferSize || bufferSize < m_prevBufferSize / 2;
|
||||||
|
|
||||||
if (needsRegeneration) {
|
if (needsRegeneration) {
|
||||||
MGLOG_D("Buffer size changed significantly or not initialized, regenerating buffer with ID: %u",
|
MGLOG_D("Buffer size changed significantly or not initialized, regenerating buffer with ID: %u",
|
||||||
m_backendBufferId);
|
m_backendBufferId);
|
||||||
SyncToBackend_glBufferData(stateBufferObject);
|
SyncToBackend_glBufferData(stateBufferObject);
|
||||||
m_isInitialized = true;
|
m_isInitialized = true;
|
||||||
|
m_prevBufferSize = bufferSize;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,9 +108,9 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
|||||||
MGLOG_D("Mapping buffer with ID: %u", m_backendBufferId);
|
MGLOG_D("Mapping buffer with ID: %u", m_backendBufferId);
|
||||||
MG_External::GLES::glBindBuffer(TempBufferTarget, m_backendBufferId);
|
MG_External::GLES::glBindBuffer(TempBufferTarget, m_backendBufferId);
|
||||||
const auto& range = stateBufferObject->GetDirtyRange();
|
const auto& range = stateBufferObject->GetDirtyRange();
|
||||||
void* mappedData = MG_External::GLES::glMapBufferRange(
|
void* mappedData =
|
||||||
TempBufferTarget, range.start, range.end - range.start,
|
MG_External::GLES::glMapBufferRange(TempBufferTarget, range.start, range.end - range.start,
|
||||||
(invalidate ? GL_MAP_INVALIDATE_BUFFER_BIT : 0) | GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT);
|
(invalidate ? GL_MAP_INVALIDATE_BUFFER_BIT : 0) | GL_MAP_WRITE_BIT);
|
||||||
const void* data = stateBufferObject->GetDataReadOnly()->data();
|
const void* data = stateBufferObject->GetDataReadOnly()->data();
|
||||||
if (mappedData) {
|
if (mappedData) {
|
||||||
Memcpy(mappedData, ((const char*)(data) + range.start), range.end - range.start);
|
Memcpy(mappedData, ((const char*)(data) + range.start), range.end - range.start);
|
||||||
|
|||||||
Reference in New Issue
Block a user