From d69800a466bac18dcd0b251a100f3809d7d88a9d Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Wed, 23 Nov 2022 14:26:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D0=B1=D1=83?= =?UTF-8?q?=D1=84=D0=B5=D1=80=D0=B0=20=D1=80=D0=B5=D0=BD=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Buffers.h | 12 ++++++++++++ src/Buffers.cpp | 20 ++++++++++++++++++++ src/main.cpp | 7 ++----- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/include/Buffers.h b/include/Buffers.h index 32a431e..d7bae95 100644 --- a/include/Buffers.h +++ b/include/Buffers.h @@ -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 diff --git a/src/Buffers.cpp b/src/Buffers.cpp index 9c4d928..c0acea7 100644 --- a/src/Buffers.cpp +++ b/src/Buffers.cpp @@ -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; +} diff --git a/src/main.cpp b/src/main.cpp index e236317..86ecbac 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -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();