1 #include "../StdAfx.h"
\r
3 #include "frame_buffer_object.h"
\r
5 #include "../../common/gl/gl_check.h"
\r
11 namespace caspar { namespace common { namespace gl {
\r
13 struct frame_buffer_object::implementation
\r
16 implementation(size_t width, size_t height, GLenum mode) : mode_(mode)
\r
18 GL(glGenTextures(1, &texture_));
\r
19 GL(glBindTexture(GL_TEXTURE_2D, texture_));
\r
20 GL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA,
\r
21 GL_UNSIGNED_BYTE, NULL));
\r
22 GL(glGenFramebuffersEXT(1, &fbo_));
\r
23 GL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo_));
\r
24 GL(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, mode_, GL_TEXTURE_2D,
\r
30 glDeleteFramebuffersEXT(1, &fbo_);
\r
31 glDeleteTextures(1, &texture_);
\r
34 void bind_pixel_source()
\r
36 GL(glReadBuffer(mode_));
\r
46 frame_buffer_object::frame_buffer_object(){}
\r
47 frame_buffer_object::frame_buffer_object(size_t width, size_t height, GLenum mode)
\r
48 : impl_(new implementation(width, height, mode)){}
\r
49 void frame_buffer_object::create(size_t width, size_t height, GLenum mode)
\r
51 impl_.reset(new implementation(width, height, mode));
\r
53 void frame_buffer_object::bind_pixel_source() {impl_->bind_pixel_source();}
\r