Add OpenGLRenderTargetView and OpenGLDepthStencilView
This commit is contained in:
47
engine/src/RHI/OpenGL/OpenGLDepthStencilView.cpp
Normal file
47
engine/src/RHI/OpenGL/OpenGLDepthStencilView.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#define GLFW_INCLUDE_NONE
|
||||
#include "XCEngine/RHI/OpenGL/OpenGLDepthStencilView.h"
|
||||
#include <glad/glad.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
OpenGLDepthStencilView::OpenGLDepthStencilView() : m_texture(0), m_framebuffer(0), m_mipLevel(0) {
|
||||
}
|
||||
|
||||
OpenGLDepthStencilView::~OpenGLDepthStencilView() {
|
||||
}
|
||||
|
||||
bool OpenGLDepthStencilView::Initialize(unsigned int texture, int mipLevel) {
|
||||
m_texture = texture;
|
||||
m_mipLevel = mipLevel;
|
||||
|
||||
glGenFramebuffers(1, &m_framebuffer);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, texture, mipLevel);
|
||||
|
||||
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OpenGLDepthStencilView::Shutdown() {
|
||||
if (m_framebuffer) {
|
||||
glDeleteFramebuffers(1, &m_framebuffer);
|
||||
m_framebuffer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLDepthStencilView::Bind() {
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
|
||||
}
|
||||
|
||||
void OpenGLDepthStencilView::Unbind() {
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
47
engine/src/RHI/OpenGL/OpenGLRenderTargetView.cpp
Normal file
47
engine/src/RHI/OpenGL/OpenGLRenderTargetView.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#define GLFW_INCLUDE_NONE
|
||||
#include "XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h"
|
||||
#include <glad/glad.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace RHI {
|
||||
|
||||
OpenGLRenderTargetView::OpenGLRenderTargetView() : m_texture(0), m_framebuffer(0), m_mipLevel(0) {
|
||||
}
|
||||
|
||||
OpenGLRenderTargetView::~OpenGLRenderTargetView() {
|
||||
}
|
||||
|
||||
bool OpenGLRenderTargetView::Initialize(unsigned int texture, int mipLevel) {
|
||||
m_texture = texture;
|
||||
m_mipLevel = mipLevel;
|
||||
|
||||
glGenFramebuffers(1, &m_framebuffer);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, mipLevel);
|
||||
|
||||
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OpenGLRenderTargetView::Shutdown() {
|
||||
if (m_framebuffer) {
|
||||
glDeleteFramebuffers(1, &m_framebuffer);
|
||||
m_framebuffer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLRenderTargetView::Bind(unsigned int slot) {
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
|
||||
}
|
||||
|
||||
void OpenGLRenderTargetView::Unbind() {
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
} // namespace RHI
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user