Cleaning up shutdown

This commit is contained in:
Confideo-IOM
2026-08-17 21:44:00 +01:00
parent 139fb149b2
commit 282243a16b
89 changed files with 2112 additions and 855 deletions
@@ -0,0 +1,33 @@
#ifndef HYDRADELETEGPUBUFFERTASK
#define HYDRADELETEGPUBUFFERTASK
#include "../HydraTask.h"
#include "../../engine/HydraEngine.h"
#include "../../buffer/HydraBufferManager.h"
#include <string>
class HydraDeleteGPUBufferTask : public HydraTask
{
private:
HydraID m_buffer_id;
protected:
public:
virtual void Process() override
{
GetEngine()->BufferManager()->DeleteBuffer(m_buffer_id);
}
void Intialise(uint32_t buffer_id)
{
m_buffer_id = buffer_id;
}
};
#endif /* HYDRADELETEGPUBUFFERTASK */
@@ -0,0 +1,32 @@
#ifndef HYDRADELETETEXTURETASK
#define HYDRADELETETEXTURETASK
#include "../HydraTask.h"
#include "../../engine/HydraEngine.h"
#include "../../buffer/HydraTextureBufferManager.h"
class HydraDeleteTextureTask : public HydraTask
{
private:
HydraID m_texture_id;
protected:
public:
virtual void Process() override
{
GetEngine()->TextureBufferManager()->DeleteTexture(m_texture_id);
}
void Initialise(HydraID texture_id)
{
m_texture_id = texture_id;
}
};
#endif /* HYDRADELETETEXTURETASK */
@@ -0,0 +1,26 @@
#ifndef HYDRADELETEVERTEXBUFFERTASK
#define HYDRADELETEVERTEXBUFFERTASK
#include "../HydraTask.h"
#include "../../engine/HydraEngine.h"
#include "../../buffer/HydraVertexBufferManager.h"
class HydraDeleteVertexBufferTask : public HydraTask
{
private:
HydraID m_buffer_id;
protected:
public:
virtual void Process() override
{
GetEngine()->VertexBufferManager()->DeleteVertexBuffer(m_buffer_id);
}
void Intialise(uint32_t buffer_id)
{
m_buffer_id = buffer_id;
}
};
#endif /* HYDRADELETEVERTEXBUFFERTASK */
@@ -11,7 +11,6 @@
class HydraCreateCascadeShadowFrameBuffer : public HydraTask
{
private:
uint32_t *m_texture_id = 0;
uint32_t *m_depth_texture_id = 0;
uint32_t *m_frame_buffer_id = nullptr;
@@ -24,15 +23,6 @@ public:
HydraTextureBufferManager *tex_buffer_manager = engine->TextureBufferManager();
HydraRenderSettings render_settings = engine->RenderSettings();
*m_texture_id = tex_buffer_manager->CreateTextureArray("shadow_FB",
DIRECTIONAL_SHADOW_MAP_SIZE, DIRECTIONAL_SHADOW_MAP_SIZE,
GL_RGBA8,
GL_NEAREST,
GL_NEAREST,
6);
HydraTextureBuffer texture = tex_buffer_manager->GetTexture(*m_texture_id);
*m_depth_texture_id = tex_buffer_manager->CreateTextureArray("shadow_depth_buffer",
DIRECTIONAL_SHADOW_MAP_SIZE, DIRECTIONAL_SHADOW_MAP_SIZE,
GL_DEPTH_COMPONENT32F,
@@ -44,10 +34,6 @@ public:
glGenFramebuffers(1, m_frame_buffer_id);
glBindFramebuffer(GL_FRAMEBUFFER, *m_frame_buffer_id);
glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTextureParameteri(texture.gl_tex_id, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
// FIX 1: Set explicit filters for the depth texture to prevent incomplete attachment
glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@@ -57,14 +43,13 @@ public:
glTextureParameteri(depth_texture.gl_tex_id, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glTextureParameterfv(depth_texture.gl_tex_id, GL_TEXTURE_BORDER_COLOR, &border[0]);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture.gl_tex_id, 0);
glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, depth_texture.gl_tex_id, 0);
glNamedFramebufferDrawBuffer(*m_frame_buffer_id, GL_COLOR_ATTACHMENT0);
glNamedFramebufferReadBuffer(*m_frame_buffer_id, GL_COLOR_ATTACHMENT0);
glNamedFramebufferDrawBuffer(*m_frame_buffer_id, GL_NONE);
glNamedFramebufferReadBuffer(*m_frame_buffer_id, GL_NONE);
GLenum draw_buffers[] = {GL_COLOR_ATTACHMENT0};
glNamedFramebufferDrawBuffers(*m_frame_buffer_id, 1, draw_buffers);
glNamedFramebufferDrawBuffers(*m_frame_buffer_id, 0, nullptr);
GLenum status = glCheckNamedFramebufferStatus(*m_frame_buffer_id, GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE)
@@ -76,9 +61,8 @@ public:
tex_buffer_manager->BindTexture(*m_depth_texture_id, GL_TEXTURE_2D_ARRAY);
}
void Initialise(uint32_t *texture_id, uint32_t *depth_texture_id, uint32_t *frame_buffer_id)
void Initialise( uint32_t *depth_texture_id, uint32_t *frame_buffer_id)
{
m_texture_id = texture_id;
m_frame_buffer_id = frame_buffer_id;
m_depth_texture_id = depth_texture_id;
}
@@ -0,0 +1,36 @@
#ifndef HYDRADELETESHADOWFRAMEBUFFERTASK
#define HYDRADELETESHADOWFRAMEBUFFERTASK
#include "../HydraTask.h"
#include "../../engine/HydraEngine.h"
#include "../../renderer/HydraRenderer.h"
#include <GLMIncludes.h>
#include "../../GlewIncludes.h"
#include "../../buffer/HydraTextureBufferManager.h"
class HydraDeleteShadowFrameBufferTask : public HydraTask
{
private:
uint32_t m_depth_texture_id = 0;
uint32_t m_frame_buffer_id = 0;
protected:
public:
void Process() override
{
HydraEngine *engine = GetEngine();
HydraTextureBufferManager *tex_buffer_manager = engine->TextureBufferManager();
tex_buffer_manager->DeleteTexture(m_depth_texture_id);
glDeleteFramebuffers(0, &m_frame_buffer_id);
}
void Initialise( uint32_t depth_texture_id, uint32_t frame_buffer_id)
{
m_frame_buffer_id = frame_buffer_id;
m_depth_texture_id = depth_texture_id;
}
};
#endif /* HYDRADELETESHADOWFRAMEBUFFERTASK */