From cb36e70127ac6bdfc8960fbddf545afcfbca1ce4 Mon Sep 17 00:00:00 2001 From: onelin Date: Sun, 15 Mar 2026 23:14:56 +0100 Subject: Add support for SSBO buffers --- src/gl.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gl.c b/src/gl.c index 365977e..fb8e140 100644 --- a/src/gl.c +++ b/src/gl.c @@ -241,6 +241,7 @@ RenderObject RenderObject_new( gl->BindVertexArray(o.vao); ASSERT(!(err = gl->GetError())); + u32 static_buffers = 0; /* For each buffer in the shader, */ /* The shader should be generalied, */ for (usize i = 0; i < num_buffers; i++) { @@ -249,9 +250,14 @@ RenderObject RenderObject_new( gl->CreateBuffers(1, &(buffers[i].buffername)); ASSERT(!(err = gl->GetError())); - //gl->NamedBufferStorage(buffers[i].buffername, (isize)sz, buffers[i].data, ShaderBuffer_get_gl_accesstype(buffers[i].buffertype)); - //ASSERT(!(err = gl->GetError())); - gl->NamedBufferData(buffers[i].buffername, (isize)sz, buffers[i].data, ShaderBuffer_get_gl_accesstype(buffers[i].buffertype)); + if ((buffers[i].buffertype & 3) == ShaderBuffer_static) { + // TODO: Set flags according to accesstype + gl->NamedBufferStorage(buffers[i].buffername, (isize)sz, buffers[i].data, 0); + gl->BindBufferBase(GL_SHADER_STORAGE_BUFFER, static_buffers, buffers[i].buffername); + static_buffers++; + } else { + gl->NamedBufferData(buffers[i].buffername, (isize)sz, buffers[i].data, ShaderBuffer_get_gl_accesstype(buffers[i].buffertype)); + } ASSERT(!(err = gl->GetError())); } -- cgit v1.3