update uniforms properly
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user