taisei/src/renderer/gl33/framebuffer_async_read_fake.c
2024-05-17 04:58:47 +02:00

41 lines
1.2 KiB
C

/*
* This software is licensed under the terms of the MIT License.
* See COPYING for further information.
* ---
* Copyright (c) 2011-2024, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2024, Andrei Alexeyev <akari@taisei-project.org>.
*/
#include "framebuffer_async_read.h"
#include "framebuffer.h"
void gl33_framebuffer_read_async(
Framebuffer *framebuffer,
FramebufferAttachment attachment,
IntRect region,
void *userdata,
FramebufferReadAsyncCallback callback
) {
GLTextureFormatInfo *fmtinfo = gl33_framebuffer_get_format(framebuffer, attachment);
Pixmap pxm = {
.width = region.w,
.height = region.h,
.format = fmtinfo->transfer_format.pixmap_format,
.origin = PIXMAP_ORIGIN_BOTTOMLEFT,
};
pxm.data.untyped = pixmap_alloc_buffer(pxm.format, pxm.width, pxm.height, &pxm.data_size);
gl33_framebuffer_bind_for_read(framebuffer, attachment);
glReadPixels(
region.x, region.y, region.w, region.h,
fmtinfo->transfer_format.gl_format, fmtinfo->transfer_format.gl_type,
pxm.data.untyped);
callback(&pxm, userdata);
mem_free(pxm.data.untyped);
}
void gl33_framebuffer_process_read_requests(void) { }
void gl33_framebuffer_finalize_read_requests(void) { }