On 06/25/2012 06:34 PM, Jordan Justen wrote:
Previously if a format of GL_RGBA was used, then float data would
be returned, even if the type was an integer type.
Signed-off-by: Jordan Justen<jordan.l.jus...@intel.com>
---
src/mesa/main/readpix.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 4058019..e3c4611 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -337,7 +337,7 @@ slow_read_rgba_pixels( struct gl_context *ctx,
goto done;
for (j = 0; j< height; j++) {
- if (_mesa_is_enum_format_integer(format)) {
+ if (_mesa_is_integer_format_or_type(format, type)) {
_mesa_unpack_uint_rgba_row(rbFormat, width, map, (GLuint (*)[4]) rgba);
_mesa_rebase_rgba_uint(width, (GLuint (*)[4]) rgba,
rb->_BaseFormat);
I'm not quite sure I follow this.
If we call glReadPixels(format=GL_RGBA, type=GL_UNSIGNED_BYTE) it
looks like _mesa_is_integer_format_or_type(format, type) will evaluate
to true and we'll errantly take the integer path, rather than the
float path.
If one wants to read integer-valued colors, you need to pass
format=GL_RGBA_INTEGER.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev