From 6ee8a1cb7cb05a31f2bff8549bc5bab54c83be83 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 21 Aug 2021 16:06:45 +0200 Subject: [PATCH] gpu/internal/opengl: avoid crash when uniform buffers are not supported Found by Dan Kortschak. Signed-off-by: Elias Naur --- gpu/internal/opengl/opengl.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/gpu/internal/opengl/opengl.go b/gpu/internal/opengl/opengl.go index 9c391f46..8d145cd7 100644 --- a/gpu/internal/opengl/opengl.go +++ b/gpu/internal/opengl/opengl.go @@ -1008,16 +1008,19 @@ func (b *Backend) BindFragmentUniforms(buf driver.Buffer) { func (p *program) updateUniforms() { f := p.backend.funcs - if p.backend.ubo { - if b := p.backend.vertUniforms; b != nil { + if b := p.backend.vertUniforms; b != nil { + if p.backend.ubo { p.backend.glstate.bindBufferBase(f, gl.UNIFORM_BUFFER, 0, b.obj) + } else { + p.vertUniforms.update(f, b) } - if b := p.backend.fragUniforms; b != nil { + } + if b := p.backend.fragUniforms; b != nil { + if p.backend.ubo { p.backend.glstate.bindBufferBase(f, gl.UNIFORM_BUFFER, 1, b.obj) + } else { + p.fragUniforms.update(f, b) } - } else { - p.vertUniforms.update(f, p.backend.vertUniforms) - p.fragUniforms.update(f, p.backend.fragUniforms) } }