diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2014-05-30 15:48:29 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2014-05-30 15:48:29 -0400 |
commit | 45e219eac23ea4a8181f68300fed693d9ac361a0 (patch) | |
tree | 06b72b3ca9a97b1352537836a2a42af7033ae6b1 /libdimension/gl.c | |
parent | f61c7c75c3c7ff4a329315700d3efa1d77bafa6d (diff) | |
download | dimension-45e219eac23ea4a8181f68300fed693d9ac361a0.tar.xz |
canvas: Use pool.
Diffstat (limited to 'libdimension/gl.c')
-rw-r--r-- | libdimension/gl.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/libdimension/gl.c b/libdimension/gl.c index 0b6b0b0..c6a2da5 100644 --- a/libdimension/gl.c +++ b/libdimension/gl.c @@ -1,5 +1,5 @@ /************************************************************************* - * Copyright (C) 2009-2011 Tavian Barnes <tavianator@tavianator.com> * + * Copyright (C) 2009-2014 Tavian Barnes <tavianator@tavianator.com> * * * * This file is part of The Dimension Library. * * * @@ -77,21 +77,18 @@ dmnsn_gl_write_canvas(const dmnsn_canvas *canvas) } /* Read a canvas from a GL framebuffer. Returns NULL on failure. */ -dmnsn_canvas * -dmnsn_gl_read_canvas(size_t x0, size_t y0, - size_t width, size_t height) +int +dmnsn_gl_read_canvas(dmnsn_canvas *canvas, size_t x0, size_t y0) { - dmnsn_canvas *canvas = dmnsn_new_canvas(width, height); + size_t width = canvas->width; + size_t height = canvas->height; /* Array of 16-bit ints in RGBA order */ GLushort *pixels = dmnsn_malloc(4*width*height*sizeof(GLushort)); - glReadPixels(x0, y0, width, height, GL_RGBA, GL_UNSIGNED_SHORT, pixels); - if (glGetError() != GL_NO_ERROR) { dmnsn_free(pixels); - dmnsn_delete_canvas(canvas); - return NULL; + return -1; } for (size_t y = 0; y < height; ++y) { @@ -111,5 +108,5 @@ dmnsn_gl_read_canvas(size_t x0, size_t y0, } dmnsn_free(pixels); - return canvas; + return 0; } |