GL: Reworked Buffer (re)creation

This commit is contained in:
korenkonder
2025-11-14 01:13:36 +03:00
parent 1bf057dc89
commit 5fabbbbcd4
14 changed files with 325 additions and 166 deletions
+8 -8
View File
@@ -43,9 +43,9 @@ struct EffectStorage {
}
void Create(gl_state_struct& gl_st, size_t size, size_t count,
const EffectStorageAttrib* attribs);
const EffectStorageAttrib* attribs, GL::BufferUsage usage = GL::BUFFER_USAGE_STREAM);
void Create(gl_state_struct& gl_st, size_t size, size_t count,
const EffectStorageAttrib* attribs, const void* data, bool dynamic = false);
const EffectStorageAttrib* attribs, const void* data, GL::BufferUsage usage = GL::BUFFER_USAGE_STATIC);
void Destroy();
inline void Bind(p_gl_rend_state& p_gl_rend_st, int32_t index) {
@@ -1767,9 +1767,9 @@ bool effect_manager_unload() {
}
void EffectStorage::Create(gl_state_struct& gl_st, size_t size, size_t count,
const EffectStorageAttrib* attribs) {
const EffectStorageAttrib* attribs, GL::BufferUsage usage) {
if (GLAD_GL_VERSION_4_3) {
ssbo.Create(gl_st, size * count);
ssbo.Create(gl_st, size * count, usage);
return;
}
else if (vao || !attribs)
@@ -1778,7 +1778,7 @@ void EffectStorage::Create(gl_state_struct& gl_st, size_t size, size_t count,
glGenVertexArrays(1, &vao);
gl_st.bind_vertex_array(vao, true);
vbo.Create(gl_st, size * count);
vbo.Create(gl_st, size * count, usage);
gl_st.bind_array_buffer(vbo, true);
const EffectStorageAttrib* attrib = attribs;
@@ -1795,9 +1795,9 @@ void EffectStorage::Create(gl_state_struct& gl_st, size_t size, size_t count,
}
void EffectStorage::Create(gl_state_struct& gl_st, size_t size, size_t count,
const EffectStorageAttrib* attribs, const void* data, bool dynamic) {
const EffectStorageAttrib* attribs, const void* data, GL::BufferUsage usage) {
if (GLAD_GL_VERSION_4_3) {
ssbo.Create(gl_st, size * count, data, dynamic);
ssbo.Create(gl_st, size * count, data, usage);
return;
}
else if (vao || !attribs)
@@ -1806,7 +1806,7 @@ void EffectStorage::Create(gl_state_struct& gl_st, size_t size, size_t count,
glGenVertexArrays(1, &vao);
gl_st.bind_vertex_array(vao, true);
vbo.Create(gl_st, size * count, data, true);
vbo.Create(gl_st, size * count, data, usage);
gl_st.bind_array_buffer(vbo, true);
const EffectStorageAttrib* attrib = attribs;