- Bind _bind(this, true);
- width = w;
- height = h;
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, fmt, width, height);
+ if(!get_component_size(fmt) && MSP_sized_internal_formats)
+ {
+ unsigned size = (fmt==DEPTH_COMPONENT ? get_gl_api()==OPENGL_ES2 ? 2 : 4 : 1);
+ return get_sized_pixelformat(fmt, size);
+ }
+
+ return fmt;
+}
+
+void Renderbuffer::storage(PixelFormat fmt, unsigned wd, unsigned ht)
+{
+ fmt = normalize_format(fmt);
+ require_pixelformat(fmt);
+ width = wd;
+ height = ht;
+ if(ARB_direct_state_access)
+ glNamedRenderbufferStorage(id, fmt, width, height);
+ else
+ {
+ BindRestore _bind(this);
+ glRenderbufferStorage(GL_RENDERBUFFER, fmt, width, height);
+ }