diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-02-15 13:44:53 +0100 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-02-15 13:44:53 +0100 |
commit | 29df3df4f2b5eeb5050653678a287cbc7e143886 (patch) | |
tree | 4ea9e97ffcd479ea76b71c483d0e436bcdb7da7b | |
parent | fe1a6bbac46a4b1caabfb2e71d7680305f256894 (diff) |
ensure no writes out of the buffer area in glReadPixels
-rw-r--r-- | src/library_gl.js | 14 |
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) { |