Files
XCEngine/engine/src/RHI/OpenGL/OpenGLDepthStencilView.cpp

48 lines
1.2 KiB
C++

#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