participant App participant Context participant Framebuffer participant Texture App->Context: glTexImage2D Context->Texture: setImage Texture-->Framebuffer: onSubjectStateChange Note over Framebuffer: cache update Framebuffer-->Context: onSubjectStateChange Note over Context: cache update AppAppContextContextFramebufferFramebufferTextureTextureglTexImage2DsetImageonSubjectStateChangecache updateonSubjectStateChangecache update