diff --git a/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.c b/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.c index 69cc670..252eeab 100644 --- a/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.c +++ b/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.c @@ -1,14 +1,17 @@ #include "opengl_uniform.h" void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info) { - uniform->uniform->type = gl_buffer; - uniform->uniform->buffer_info = *info; + uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE; + uniform->uniform->bindings[info->binding].type = gl_buffer; + uniform->uniform->bindings[info->binding].buffer_info = *info; } void openglUpdateStorageUniform(gnUniform uniform, gnStorageUniformInfo* info) { - uniform->uniform->type = gl_storage; - uniform->uniform->storage_info = *info; + uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE; + uniform->uniform->bindings[info->binding].type = gl_storage; + uniform->uniform->bindings[info->binding].storage_info = *info; } void openglUpdateImageUniform(gnUniform uniform, gnImageUniformInfo* info) { - uniform->uniform->type = gl_image; - uniform->uniform->image_info = *info; + uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE; + uniform->uniform->bindings[info->binding].type = gl_image; + uniform->uniform->bindings[info->binding].image_info = *info; } diff --git a/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.h b/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.h index cd61a40..3394cb9 100644 --- a/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.h +++ b/projects/apis/opengl/src/uniforms/uniform/opengl_uniform.h @@ -1,18 +1,24 @@ #pragma once #include "glad/glad.h" #include "core/src/uniforms/gryphn_uniform.h" +#include "shaders/opengl_shader_compiler.h" typedef enum openglUniformType { gl_buffer, gl_storage, gl_image } openglUniformType; -typedef struct gnPlatformUniform_t { +typedef struct glUniformBinding { openglUniformType type; union { gnBufferUniformInfo buffer_info; gnStorageUniformInfo storage_info; gnImageUniformInfo image_info; }; + gnBool isUpdated; +} glUniformBinding; + +typedef struct gnPlatformUniform_t { + glUniformBinding bindings[MAX_OPENGL_BINDINGS]; } gnPlatformUniform; void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info);