Skip to content

Commit

Permalink
Create buffers
Browse files Browse the repository at this point in the history
  • Loading branch information
RobDangerous committed Mar 1, 2025
1 parent 8203cdc commit caa20ad
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 7 deletions.
3 changes: 2 additions & 1 deletion backends/gpu/opengl/includes/kore3/opengl/buffer_structs.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ extern "C" {
struct kore_gpu_device;

typedef struct kore_opengl_buffer {
int nothing;
uint32_t buffer;
uint32_t buffer_type;
} kore_opengl_buffer;

#ifdef __cplusplus
Expand Down
22 changes: 17 additions & 5 deletions backends/gpu/opengl/sources/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,34 @@

void kore_opengl_buffer_set_name(kore_gpu_buffer *buffer, const char *name) {}

void kore_opengl_buffer_destroy(kore_gpu_buffer *buffer) {}
void kore_opengl_buffer_destroy(kore_gpu_buffer *buffer) {
glDeleteBuffers(1, &buffer->opengl.buffer);
}

void *kore_opengl_buffer_try_to_lock_all(kore_gpu_buffer *buffer) {
return NULL;
return kore_opengl_buffer_lock_all(buffer);
}

void *kore_opengl_buffer_lock_all(kore_gpu_buffer *buffer) {
return NULL;
glBindBuffer(buffer->opengl.buffer_type, buffer->opengl.buffer);
void *data = glMapBuffer(buffer->opengl.buffer_type, GL_WRITE_ONLY);
glBindBuffer(buffer->opengl.buffer_type, buffer->opengl.buffer);
return data;
}

void *kore_opengl_buffer_try_to_lock(kore_gpu_buffer *buffer, uint64_t offset, uint64_t size) {
return NULL;
}

void *kore_opengl_buffer_lock(kore_gpu_buffer *buffer, uint64_t offset, uint64_t size) {
return NULL;
glBindBuffer(buffer->opengl.buffer_type, buffer->opengl.buffer);
void *data = glMapBufferRange(buffer->opengl.buffer_type, offset, size, GL_WRITE_ONLY);
glBindBuffer(buffer->opengl.buffer_type, 0);
return data;
}

void kore_opengl_buffer_unlock(kore_gpu_buffer *buffer) {}
void kore_opengl_buffer_unlock(kore_gpu_buffer *buffer) {
glBindBuffer(buffer->opengl.buffer_type, buffer->opengl.buffer);
glUnmapBuffer(buffer->opengl.buffer_type);
glBindBuffer(buffer->opengl.buffer_type, 0);
}
18 changes: 17 additions & 1 deletion backends/gpu/opengl/sources/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,23 @@ void kore_opengl_device_destroy(kore_gpu_device *device) {}

void kore_opengl_device_set_name(kore_gpu_device *device, const char *name) {}

void kore_opengl_device_create_buffer(kore_gpu_device *device, const kore_gpu_buffer_parameters *parameters, kore_gpu_buffer *buffer) {}
void kore_opengl_device_create_buffer(kore_gpu_device *device, const kore_gpu_buffer_parameters *parameters, kore_gpu_buffer *buffer) {
glGenBuffers(1, &buffer->opengl.buffer);
if ((parameters->usage_flags & KORE_GPU_BUFFER_USAGE_VERTEX) != 0) {
buffer->opengl.buffer_type = GL_ARRAY_BUFFER;
}
else if ((parameters->usage_flags & KORE_GPU_BUFFER_USAGE_INDEX) != 0) {
buffer->opengl.buffer_type = GL_ELEMENT_ARRAY_BUFFER;
}
else {
assert(false);
}

glBindBuffer(buffer->opengl.buffer_type, buffer->opengl.buffer);
kore_opengl_check_errors();
glBufferData(buffer->opengl.buffer_type, parameters->size, NULL, GL_DYNAMIC_DRAW);
glBindBuffer(buffer->opengl.buffer_type, 0);
}

void kore_opengl_device_create_command_list(kore_gpu_device *device, kore_gpu_command_list_type type, kore_gpu_command_list *list) {}

Expand Down

0 comments on commit caa20ad

Please sign in to comment.