bool GL::GeometryBuffer::Update(const bool init) { currBufferSize = GetWantedSize(true); // FBO must be valid from point of construction if (!buffer.IsValid()) return false; // buffer isn't bound by calling context, can not call // GetStatus to check for GL_FRAMEBUFFER_COMPLETE here // if (HasAttachments()) { // technically a buffer can not be complete yet during // initialization, however the GL spec says that FBO's // with only empty attachments are complete by default // assert(!init); // FBO was already initialized (during init or from Lua) // so it will have attachments -> check if they need to // be regenerated, eg. if a window resize event happened if (prevBufferSize == currBufferSize) return true; DetachTextures(init); } return (Create(prevBufferSize = currBufferSize)); }
void GL::GeometryBuffer::Kill(bool dtor) { if (dead) { // if already dead, this must be final cleanup assert(dtor); return; } if (buffer.IsValid()) DetachTextures(false); dead = true; }
void GL::GeometryBuffer::Kill() { if (buffer.IsValid()) { DetachTextures(false); } }