diff options
| author | onelin <oscar@nelin.dk> | 2026-03-15 22:14:56 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2026-03-15 22:14:56 +0000 |
| commit | cb36e70127ac6bdfc8960fbddf545afcfbca1ce4 (patch) | |
| tree | 27b0bcff08aca01b8b48174d18699195d29be6a5 /src/gl.c | |
| parent | 38ddb7e5052af5edbe173098fb704ad080016df0 (diff) | |
Add support for SSBO buffers
Diffstat (limited to 'src/gl.c')
| -rw-r--r-- | src/gl.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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())); } |
