aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEhsan Akhgari <ehsan.akhgari@gmail.com>2012-02-11 18:24:09 -0500
committerEhsan Akhgari <ehsan.akhgari@gmail.com>2012-03-28 10:53:27 -0700
commitdafb88ae5ec18a30001c3481e649138b73657849 (patch)
treeecaea7e6507b2c0f6a1241cc282c92839868afe5 /src
parentaf436e6ae0162a92d3db643814fcecbf3d9ad22b (diff)
Implement glBufferSubData
Diffstat (limited to 'src')
-rw-r--r--src/library_gl.js5
-rw-r--r--src/preamble.js11
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;
}