static bool getFramebufferAttachmentSize(GLenum target, GLenum attachment, GLint *width, GLint *height) { GLint object_type = GL_NONE; glGetFramebufferAttachmentParameteriv(target, attachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &object_type); if (object_type == GL_NONE) { return false; } GLint object_name = 0; glGetFramebufferAttachmentParameteriv(target, attachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &object_name); if (object_name == 0) { return false; } if (object_type == GL_RENDERBUFFER) { return getRenderbufferSize(object_name, width, height); } else if (object_type == GL_TEXTURE) { GLint texture_level = 0; glGetFramebufferAttachmentParameteriv(target, attachment, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, &texture_level); return getTextureLevelSize(object_name, texture_level, width, height); } else { std::cerr << "warning: unexpected GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = " << object_type << "\n"; return false; } }
unsigned char* Awesomium::getBuffer() { unsigned char *Buffer; Buffer = new unsigned char[getRenderbufferSize()]; awe_renderbuffer_copy_to(rBuffer, Buffer, awe_renderbuffer_get_width(rBuffer)*4, 4, true, false); return Buffer; }