diff options
Diffstat (limited to 'src')
| -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())); } |
