GPU: Implement support for multisample antialiasing

This commit is contained in:
Connor McLaughlin
2020-10-31 00:38:06 +10:00
parent 61a4960380
commit 2eaebd8921
28 changed files with 804 additions and 407 deletions

View File

@ -10,8 +10,8 @@ public:
Texture(Texture&& moved);
~Texture();
bool Create(u32 width, u32 height, GLenum internal_format, GLenum format, GLenum type, const void* data = nullptr,
bool linear_filter = false, bool wrap = false);
bool Create(u32 width, u32 height, u32 samples, GLenum internal_format, GLenum format, GLenum type,
const void* data = nullptr, bool linear_filter = false, bool wrap = false);
bool CreateFramebuffer();
void Destroy();
@ -19,11 +19,14 @@ public:
void SetLinearFilter(bool enabled);
bool IsValid() const { return m_id != 0; }
bool IsMultisampled() const { return m_samples > 1; }
GLuint GetGLId() const { return m_id; }
u32 GetWidth() const { return m_width; }
u32 GetHeight() const { return m_height; }
u32 GetSamples() const { return m_samples; }
GLuint GetGLFramebufferID() const { return m_fbo_id; }
GLenum GetGLTarget() const { return IsMultisampled() ? GL_TEXTURE_2D_MULTISAMPLE : GL_TEXTURE_2D; }
void Bind();
void BindFramebuffer(GLenum target = GL_DRAW_FRAMEBUFFER);
@ -42,6 +45,7 @@ private:
GLuint m_id = 0;
u32 m_width = 0;
u32 m_height = 0;
u32 m_samples = 0;
GLuint m_fbo_id = 0;
};