Класс буфера рендера

This commit is contained in:
parent 2f63a57fd7
commit d69800a466
3 changed files with 34 additions and 5 deletions

View File

@ -73,4 +73,16 @@ class FBO
GLuint handler; // Дескриптор
};
// Объект буфера рендера
class RBO
{
public:
RBO(int w, int h, GLuint component = GL_DEPTH_COMPONENT); // Создает буфер рендера с заданными параметрами размеров и используемых компонент
~RBO(); // Уничтожение буфера
GLuint getHandler(); // Возвращает дескриптор буфера рендера
protected:
GLuint handler; // Дескриптор
};
#endif // BUFFERS_H

View File

@ -174,3 +174,23 @@ void FBO::assignRenderBuffer(GLuint hander, GLuint attachment)
{
glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, hander);
}
// Создает буфер рендера с заданными параметрами размеров и используемых компонент
RBO::RBO(int w, int h, GLuint component)
{
glGenRenderbuffers(1, &handler);
glBindRenderbuffer(GL_RENDERBUFFER, handler);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, w, h);
}
// Уничтожение буфера
RBO::~RBO()
{
glDeleteRenderbuffers(1, &handler);
}
// Возвращает дескриптор буфера рендера
GLuint RBO::getHandler()
{
return handler;
}

View File

@ -125,11 +125,8 @@ int main(void)
Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0);
Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);
// Создадим буфер рендера под буфер глубины и привяжем его
unsigned int rbo;
glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, WINDOW_WIDTH, WINDOW_HEIGHT);
fbo.assignRenderBuffer(rbo);
RBO rbo(WINDOW_WIDTH, WINDOW_HEIGHT);
fbo.assignRenderBuffer(rbo.getHandler());
// Активируем базовый буфер кадра
FBO::useDefault();