more flexible approach to generating textures and framebuffers