+
+ rbuf_width = ((int)(x * opt.gfx.render_res) + 3) & 0xfffffc;
+ rbuf_height = ((int)(y * opt.gfx.render_res) + 3) & 0xfffffc;
+ printf("render buffer %dx%d\n", rbuf_width, rbuf_height);
+
+ if(!fbo) {
+ glGenFramebuffers(1, &fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+ glGenRenderbuffers(1, &rbuf_col);
+ glBindRenderbuffer(GL_RENDERBUFFER, rbuf_col);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB, rbuf_width, rbuf_height);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbuf_col);
+
+ glGenRenderbuffers(1, &rbuf_zbuf);
+ glBindRenderbuffer(GL_RENDERBUFFER, rbuf_zbuf);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, rbuf_width, rbuf_height);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rbuf_zbuf);
+
+ glBindFramebuffer(GL_FRAMEBUFFER, 0);
+ } else {
+ glBindRenderbuffer(GL_RENDERBUFFER, rbuf_col);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_RGB, rbuf_width, rbuf_height);
+
+ glBindRenderbuffer(GL_RENDERBUFFER, rbuf_zbuf);
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, rbuf_width, rbuf_height);
+ }