summaryrefslogtreecommitdiff
path: root/src/gl.c
diff options
context:
space:
mode:
authoronelin <oscar@nelin.dk>2025-11-13 08:48:56 +0000
committeronelin <oscar@nelin.dk>2025-11-13 08:51:52 +0000
commita4c67096a3afd74ec9ceff9260cff9ad0336b208 (patch)
treec230dd2592433c7bbf6587fd81f4b52c649ec484 /src/gl.c
parentf175d64cc00f9d08f8c02bcbf8287c3e21430611 (diff)
Use Direct State Access
DSA (Direct State Access) is apparently a more modern way of using OpenGL, since version 4.5.
Diffstat (limited to 'src/gl.c')
-rw-r--r--src/gl.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/gl.c b/src/gl.c
index 8283a3e..0eb4744 100644
--- a/src/gl.c
+++ b/src/gl.c
@@ -191,7 +191,7 @@ void shaders_delete(Shader* shader, usize shader_len) {
GLenum ShaderBuffer_get_gl_access(u64 flags) {
const ShaderBufferFlag access = ShaderBuffer_get_access_type(flags);
- switch(flags & 0b111) {
+ switch(flags & 7) { // Stored in the first 3 bits
case ShaderBuffer_AccessFrequency_stream:
switch(access) {
case ShaderBuffer_AccessType_draw: return GL_STREAM_DRAW;
@@ -225,18 +225,16 @@ RenderObject RenderObject_new(
GladGLContext *gl = GLOBAL_PLATFORM->window->context;
RenderObject o;
- gl->GenVertexArrays(1, &(o.vao));
+ gl->CreateVertexArrays(1, &(o.vao));
gl->BindVertexArray(o.vao);
/* For each buffer in the shader, */
/* The shader should be generalied, */
for (usize i = 0; i < num_buffers; i++) {
const usize sz = buffers[i].size_elem * buffers[i].count;
- const u32 b_gl_type = ShaderBuffer_get_gl_type(buffers[i].buffertype);
- gl->GenBuffers(1, &(buffers[i].buffername));
- gl->BindBuffer(b_gl_type, buffers[i].buffername);
- gl->BufferData(b_gl_type, (isize)sz, buffers[i].data, ShaderBuffer_get_gl_accesstype(buffers[i].buffertype));
+ gl->CreateBuffers(1, &(buffers[i].buffername));
+ gl->NamedBufferData(buffers[i].buffername, (isize)sz, buffers[i].data, ShaderBuffer_get_gl_accesstype(buffers[i].buffertype));
}
o.shader = *shader;