Big changes

This commit is contained in:
Kirill Yurkin
2025-03-07 16:54:27 +03:00
parent dd05797b95
commit 719171e7d8
21 changed files with 817 additions and 285 deletions

View File

@@ -1,12 +1,12 @@
#include <assert.h>
#include "render/rendertarget.h"
#include "render/texturesmanager.h"
#include "render/texture2d.h"
#include "render/gl_shared.h"
void RenderTarget::setDefaultFramebuffer()
{
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
}
RenderTarget::RenderTarget()
@@ -19,7 +19,7 @@ RenderTarget::~RenderTarget()
m_framebuffer = -1;
}
void RenderTarget::create(const char* name /*= nullptr*/)
void RenderTarget::Create(const char* name /*= nullptr*/)
{
assert(g_texturesManager);
@@ -27,35 +27,35 @@ void RenderTarget::create(const char* name /*= nullptr*/)
// Create FBO
// generate frame buffer
glGenFramebuffers(1, &m_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
glGenFramebuffersEXT(1, &m_framebuffer);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, m_framebuffer);
}
void RenderTarget::destroy()
void RenderTarget::Destroy()
{
GLint drawFboId;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &drawFboId);
if (drawFboId == (GLint)m_framebuffer)
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glDeleteFramebuffers(1, &m_framebuffer);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
glDeleteFramebuffersEXT(1, &m_framebuffer);
}
void RenderTarget::finialize()
void RenderTarget::Finialize()
{
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
assert(0 && "RenderTarget::finialize: failed to finialize framebuffer. Framebuffer is not complete");
if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) != GL_FRAMEBUFFER_COMPLETE_EXT) {
assert(0 && "RenderTarget::Finialize: failed to Finialize framebuffer. Framebuffer is not complete");
}
}
void RenderTarget::attachColorTexture(int slot, Texture2D* texture)
void RenderTarget::AttachColorTexture(int slot, Texture2D* texture)
{
assert(texture && "Failed to assing nullptr texture");
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + slot, GL_TEXTURE_2D, texture->GetHandle(), 0);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0 + slot, GL_TEXTURE_2D, texture->GetHandle(), 0);
}
void RenderTarget::attachDepthTexture(Texture2D* texture)
void RenderTarget::AttachDepthTexture(Texture2D* texture)
{
assert(texture && "Failed to assing nullptr texture");
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture->GetHandle(), 0);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture->GetHandle(), 0);
}