[Feat] (GL_State/Buffer, GL_Impl/Buffer): implement glBindBufferRange

This commit is contained in:
2025-11-02 10:31:05 +08:00
parent 4b4d38a00a
commit 1d3fbedf29
7 changed files with 28 additions and 6 deletions
@@ -506,6 +506,22 @@ namespace MobileGL {
auto& point = MG_State::pGLContext->GetBufferBindingPoint(bufferTarget, index);
point.Bind(bufferObject);
point.ClearRange();
}
void BindBufferRange_State(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {
BufferTarget bufferTarget = MG_Util::ConvertGLEnumToBufferTarget(target);
if (!BufferImpl::ValidateBufferBindingPointTarget(bufferTarget)) return;
auto bufferObject = MG_State::pGLContext->GetBufferObject(buffer);
if (!bufferObject) {
MG_State::pGLContext->CreateBufferObject(buffer);
bufferObject = MG_State::pGLContext->GetBufferObject(buffer);
}
auto& point = MG_State::pGLContext->GetBufferBindingPoint(bufferTarget, index);
point.Bind(bufferObject);
point.SetRange(Range1D(offset, offset + size));
}
/* @INSERTION_POINT:FUNCTION_IMPLEMENTATION@ */
@@ -561,5 +577,9 @@ namespace MobileGL {
void BindBufferBase(GLenum target, GLuint index, GLuint buffer) {
BindBufferBase_State(target, index, buffer);
}
void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {
BindBufferRange_State(target, index, buffer, offset, size);
}
} // namespace MG_Impl::GLImpl
} // namespace MobileGL