update uniforms properly
This commit is contained in:
@@ -1,14 +1,17 @@
|
|||||||
#include "opengl_uniform.h"
|
#include "opengl_uniform.h"
|
||||||
|
|
||||||
void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info) {
|
void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info) {
|
||||||
uniform->uniform->type = gl_buffer;
|
uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE;
|
||||||
uniform->uniform->buffer_info = *info;
|
uniform->uniform->bindings[info->binding].type = gl_buffer;
|
||||||
|
uniform->uniform->bindings[info->binding].buffer_info = *info;
|
||||||
}
|
}
|
||||||
void openglUpdateStorageUniform(gnUniform uniform, gnStorageUniformInfo* info) {
|
void openglUpdateStorageUniform(gnUniform uniform, gnStorageUniformInfo* info) {
|
||||||
uniform->uniform->type = gl_storage;
|
uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE;
|
||||||
uniform->uniform->storage_info = *info;
|
uniform->uniform->bindings[info->binding].type = gl_storage;
|
||||||
|
uniform->uniform->bindings[info->binding].storage_info = *info;
|
||||||
}
|
}
|
||||||
void openglUpdateImageUniform(gnUniform uniform, gnImageUniformInfo* info) {
|
void openglUpdateImageUniform(gnUniform uniform, gnImageUniformInfo* info) {
|
||||||
uniform->uniform->type = gl_image;
|
uniform->uniform->bindings[info->binding].isUpdated = GN_TRUE;
|
||||||
uniform->uniform->image_info = *info;
|
uniform->uniform->bindings[info->binding].type = gl_image;
|
||||||
|
uniform->uniform->bindings[info->binding].image_info = *info;
|
||||||
}
|
}
|
||||||
|
@@ -1,18 +1,24 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "glad/glad.h"
|
#include "glad/glad.h"
|
||||||
#include "core/src/uniforms/gryphn_uniform.h"
|
#include "core/src/uniforms/gryphn_uniform.h"
|
||||||
|
#include "shaders/opengl_shader_compiler.h"
|
||||||
|
|
||||||
typedef enum openglUniformType {
|
typedef enum openglUniformType {
|
||||||
gl_buffer, gl_storage, gl_image
|
gl_buffer, gl_storage, gl_image
|
||||||
} openglUniformType;
|
} openglUniformType;
|
||||||
|
|
||||||
typedef struct gnPlatformUniform_t {
|
typedef struct glUniformBinding {
|
||||||
openglUniformType type;
|
openglUniformType type;
|
||||||
union {
|
union {
|
||||||
gnBufferUniformInfo buffer_info;
|
gnBufferUniformInfo buffer_info;
|
||||||
gnStorageUniformInfo storage_info;
|
gnStorageUniformInfo storage_info;
|
||||||
gnImageUniformInfo image_info;
|
gnImageUniformInfo image_info;
|
||||||
};
|
};
|
||||||
|
gnBool isUpdated;
|
||||||
|
} glUniformBinding;
|
||||||
|
|
||||||
|
typedef struct gnPlatformUniform_t {
|
||||||
|
glUniformBinding bindings[MAX_OPENGL_BINDINGS];
|
||||||
} gnPlatformUniform;
|
} gnPlatformUniform;
|
||||||
|
|
||||||
void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info);
|
void openglUpdateBufferUniform(gnUniform uniform, gnBufferUniformInfo* info);
|
||||||
|
Reference in New Issue
Block a user