Класс буфера рендера
This commit is contained in:
parent
2f63a57fd7
commit
d69800a466
|
@ -73,4 +73,16 @@ class FBO
|
||||||
GLuint handler; // Дескриптор
|
GLuint handler; // Дескриптор
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Объект буфера рендера
|
||||||
|
class RBO
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RBO(int w, int h, GLuint component = GL_DEPTH_COMPONENT); // Создает буфер рендера с заданными параметрами размеров и используемых компонент
|
||||||
|
~RBO(); // Уничтожение буфера
|
||||||
|
|
||||||
|
GLuint getHandler(); // Возвращает дескриптор буфера рендера
|
||||||
|
protected:
|
||||||
|
GLuint handler; // Дескриптор
|
||||||
|
};
|
||||||
|
|
||||||
#endif // BUFFERS_H
|
#endif // BUFFERS_H
|
||||||
|
|
|
@ -174,3 +174,23 @@ void FBO::assignRenderBuffer(GLuint hander, GLuint attachment)
|
||||||
{
|
{
|
||||||
glFramebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, hander);
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -125,11 +125,8 @@ int main(void)
|
||||||
Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0);
|
Texture colors(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT0);
|
||||||
Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);
|
Texture normals(WINDOW_WIDTH, WINDOW_HEIGHT, GL_COLOR_ATTACHMENT1, 0, GL_RGBA16F);
|
||||||
// Создадим буфер рендера под буфер глубины и привяжем его
|
// Создадим буфер рендера под буфер глубины и привяжем его
|
||||||
unsigned int rbo;
|
RBO rbo(WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||||
glGenRenderbuffers(1, &rbo);
|
fbo.assignRenderBuffer(rbo.getHandler());
|
||||||
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
|
|
||||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, WINDOW_WIDTH, WINDOW_HEIGHT);
|
|
||||||
fbo.assignRenderBuffer(rbo);
|
|
||||||
// Активируем базовый буфер кадра
|
// Активируем базовый буфер кадра
|
||||||
FBO::useDefault();
|
FBO::useDefault();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue