| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #include "GL/glew.h" |
| | #include <stdlib.h> |
| | #include "GlobalUtil.h" |
| | #include "FrameBufferObject.h" |
| |
|
| | |
| | int FrameBufferObject::UseSingleFBO=1; |
| | GLuint FrameBufferObject::GlobalFBO=0; |
| |
|
| | |
| | |
| | |
| |
|
| | FrameBufferObject::FrameBufferObject(int autobind) |
| | { |
| | if(UseSingleFBO && GlobalFBO) |
| | { |
| | _fboID = GlobalFBO; |
| | }else |
| | { |
| | glGenFramebuffersEXT(1, &_fboID); |
| | if(UseSingleFBO )GlobalFBO = _fboID; |
| | } |
| | if(autobind ) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _fboID); |
| | } |
| |
|
| | FrameBufferObject::~FrameBufferObject() |
| | { |
| | glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); |
| | if(!UseSingleFBO ) |
| | { |
| | glDeleteFramebuffersEXT (1,&_fboID); |
| | } |
| | } |
| |
|
| | void FrameBufferObject::DeleteGlobalFBO() |
| | { |
| | if(UseSingleFBO) |
| | { |
| | glDeleteFramebuffersEXT (1,&GlobalFBO); |
| | GlobalFBO = 0; |
| | } |
| | } |
| |
|
| | void FrameBufferObject::AttachDepthTexture(GLenum textureTarget, GLuint texID) |
| | { |
| |
|
| | glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, textureTarget, texID, 0); |
| | } |
| |
|
| | void FrameBufferObject::AttachTexture(GLenum textureTarget, GLenum attachment, GLuint texId) |
| | { |
| | glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, attachment, textureTarget, texId, 0); |
| | } |
| |
|
| | void FrameBufferObject::BindFBO() |
| | { |
| | glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, _fboID); |
| | } |
| |
|
| | void FrameBufferObject::UnbindFBO() |
| | { |
| | glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); |
| | } |
| |
|
| | void FrameBufferObject::UnattachTex(GLenum attachment) |
| | { |
| | glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, attachment, GL_TEXTURE_2D, 0, 0 ); |
| | } |
| |
|
| | void FrameBufferObject::AttachRenderBuffer(GLenum attachment, GLuint buffID) |
| | { |
| | glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attachment, GL_RENDERBUFFER_EXT, buffID); |
| |
|
| | } |
| |
|
| | void FrameBufferObject:: UnattachRenderBuffer(GLenum attachment) |
| | { |
| | glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attachment, GL_RENDERBUFFER_EXT, 0); |
| | } |
| |
|
| |
|