aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-02-15 13:44:53 +0100
committerAlon Zakai <alonzakai@gmail.com>2013-02-15 13:44:53 +0100
commit29df3df4f2b5eeb5050653678a287cbc7e143886 (patch)
tree4ea9e97ffcd479ea76b71c483d0e436bcdb7da7b
parentfe1a6bbac46a4b1caabfb2e71d7680305f256894 (diff)
ensure no writes out of the buffer area in glReadPixels
-rw-r--r--src/library_gl.js14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 8f692dbf..1f664717 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -408,7 +408,19 @@ var LibraryGL = {
},
glReadPixels: function(x, y, width, height, format, type, pixels) {
- Module.ctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels));
+ assert(type == 0x1401 /* GL_UNSIGNED_BYTE */);
+ var sizePerPixel;
+ switch (format) {
+ case 0x1907 /* GL_RGB */:
+ sizePerPixel = 3;
+ break;
+ case 0x1908 /* GL_RGBA */:
+ sizePerPixel = 4;
+ break;
+ default: throw 'unsupported glReadPixels format';
+ }
+ var totalSize = width*height*sizePerPixel;
+ Module.ctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels, pixels + totalSize));
},
glBindTexture: function(target, texture) {