#include "rendertarget_fbo.h" using namespace std; static GLenum samp_mode[]= { GL_LINEAR, GL_NEAREST, GL_LINEAR_MIPMAP_LINEAR }; static GLenum wrap_mode[]= { GL_REPEAT, GL_CLAMP, GL_CLAMP_TO_EDGE }; // some of the FBO create code is from the NVIDIA SDK OpenGL stuff static bool CheckFramebufferStatus( bool silent = false) { GLenum status; status = (GLenum) glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); switch(status) { case GL_FRAMEBUFFER_COMPLETE_EXT: break; case GL_FRAMEBUFFER_UNSUPPORTED_EXT: if (!silent) printf("Unsupported framebuffer format\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: if (!silent) printf("Framebuffer incomplete, missing attachment\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: if (!silent) printf("Framebuffer incomplete, duplicate attachment\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: if (!silent) printf("Framebuffer incomplete, attached images must have same dimensions\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: if (!silent) printf("Framebuffer incomplete, attached images must have same format\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: if (!silent) printf("Framebuffer incomplete, missing draw buffer\n"); return false; case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: if (!silent) printf("Framebuffer incomplete, missing read buffer\n"); return false; default: return false; } return true; } RenderTargetFBO::RenderTargetFBO(SamplerState samp,int po2lev,bool floatformat): po2lev(po2lev), RenderTarget((float)(1<