diff options
author | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-02-11 18:24:09 -0500 |
---|---|---|
committer | Ehsan Akhgari <ehsan.akhgari@gmail.com> | 2012-03-28 10:53:27 -0700 |
commit | dafb88ae5ec18a30001c3481e649138b73657849 (patch) | |
tree | ecaea7e6507b2c0f6a1241cc282c92839868afe5 | |
parent | af436e6ae0162a92d3db643814fcecbf3d9ad22b (diff) |
Implement glBufferSubData
-rw-r--r-- | src/library_gl.js | 5 | ||||
-rw-r--r-- | src/preamble.js | 11 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 73ab72da..3583f366 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -235,6 +235,11 @@ var LibraryGL = { Module.ctx.bufferData(target, floatArray, usage); }, + glBufferSubData: function(target, offset, size, data) { + var floatArray = new Float32Array(TypedArray_copy(data, size, offset)); + Module.ctx.bufferSubData(target, offset, floatArray); + }, + glGenRenderbuffers__deps: ['$GL'], glGenRenderbuffers: function(n, renderbuffers) { for (var i = 0; i < n; i++) { diff --git a/src/preamble.js b/src/preamble.js index 0e43af12..d56891d0 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -729,11 +729,14 @@ Module['Array_copy'] = Array_copy; #if USE_TYPED_ARRAYS // Copies a list of num items on the HEAP into a // JavaScript typed array. -function TypedArray_copy(ptr, num) { +function TypedArray_copy(ptr, num, offset /*optional*/) { // TODO: optimize this! - var arr = new Uint8Array(num); - for (var i = 0; i < num; ++i) { - arr[i] = {{{ makeGetValue('ptr', 'i', 'i8') }}}; + if (offset === undefined) { + offset = 0; + } + var arr = new Uint8Array(num - offset); + for (var i = offset; i < num; ++i) { + arr[i - offset] = {{{ makeGetValue('ptr', 'i', 'i8') }}}; } return arr.buffer; } |