made Editor non reliant on GLFW aka i added an IRenderTexture interface of use in non renderer specific aplications

This commit is contained in:
2026-01-18 18:49:15 +01:00
parent 23e7707122
commit a453612b9a
17 changed files with 87 additions and 49 deletions

View File

@@ -12,6 +12,7 @@
#include "TextureHelperOpenGL.hpp"
#include "interfaces/IRenderer.hpp"
#include "BehaviourScripts/Camera.hpp"
#include "RenderTextureCreatorOpenGL.hpp"
TSE::GLFW::OpenGLRenderingBackend::OpenGLRenderingBackend(Color _backgroundColor, bool _vsync)
: OpenGLRenderingBackend(_backgroundColor, _vsync, 0, false){ }
@@ -36,6 +37,7 @@ TSE::GLFW::OpenGLRenderingBackend::~OpenGLRenderingBackend()
void TSE::GLFW::OpenGLRenderingBackend::InitPreWindow()
{
IRenderTexture::factory = new RenderTextureCreatorOpenGL();
Texture::helper = new TextureHelperOpenGL();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, TSE_OPENGL_VERSION_MAJOR);

View File

@@ -15,12 +15,12 @@ void TSE::GLFW::RenderTexture::SetSize(Vector2 v)
buffer.Resize(v);
}
float TSE::GLFW::RenderTexture::width() const
float TSE::GLFW::RenderTexture::Width() const
{
return buffer.GetSize().x;
}
float TSE::GLFW::RenderTexture::height() const
float TSE::GLFW::RenderTexture::Height() const
{
return buffer.GetSize().y;
}

View File

@@ -4,10 +4,11 @@
#include "interfaces/IRenderTarget.hpp"
#include "interfaces/ITexture.hpp"
#include "interfaces/IResizeNotifiable.hpp"
#include "interfaces/IRenderTexture.hpp"
namespace TSE::GLFW
{
class RenderTexture : public IRenderTarget, public ITexture, public IResizeNotifiable
class RenderTexture : public IRenderTexture
{
public:
FrameBuffer buffer;
@@ -15,9 +16,9 @@ namespace TSE::GLFW
RenderTexture(Vector2 v);
Vector2 size() const override;
void SetSize(Vector2 v);
float width() const override;
float height() const override;
void SetSize(Vector2 v) override;
float Width() const override;
float Height() const override;
uint GetTextureId() const override;
void Update() override;

View File

@@ -0,0 +1,16 @@
#pragma once
#include "interfaces/IRenderTexture.hpp"
#include "RenderTexture.hpp"
namespace TSE::GLFW
{
class RenderTextureCreatorOpenGL : public IRenderTextureCreator
{
public:
inline IRenderTexture* CreateTextureHeap(Vector2 v) override
{
return new RenderTexture(v);
};
};
} // namespace name

View File

@@ -18,19 +18,19 @@ void TSE::GLFW::TextureHelperOpenGL::Apply(Texture *tex)
if(tex->Chanels() == 1)
{
if (tex->bpp() == 8)
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->width(), tex->height(), 0, GL_RED, GL_UNSIGNED_BYTE, tex->GetImagePtr());
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->Width(), tex->Height(), 0, GL_RED, GL_UNSIGNED_BYTE, tex->GetImagePtr());
}
if(tex->Chanels() == 3)
{
if(tex->bpp() == 24)
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->width(), tex->height(), 0, GL_BGR, GL_UNSIGNED_BYTE, tex->GetImagePtr());
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->Width(), tex->Height(), 0, GL_BGR, GL_UNSIGNED_BYTE, tex->GetImagePtr());
}
else if(tex->Chanels() == 4)
{
if(tex->bpp() == 32)
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->width(), tex->height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, tex->GetImagePtr());
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->Width(), tex->Height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, tex->GetImagePtr());
if (tex->bpp() == 8) //need to decode it with bitwise operations in shader
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->width(), tex->height(), 0, GL_RED, GL_UNSIGNED_BYTE, tex->GetImagePtr());
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, tex->Width(), tex->Height(), 0, GL_RED, GL_UNSIGNED_BYTE, tex->GetImagePtr());
}
glGenerateMipmap(GL_TEXTURE_2D);