summaryrefslogtreecommitdiff
path: root/src/webGLClient.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/webGLClient.js')
-rw-r--r--src/webGLClient.js12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/webGLClient.js b/src/webGLClient.js
index 2028d1dc..535e8102 100644
--- a/src/webGLClient.js
+++ b/src/webGLClient.js
@@ -1,5 +1,9 @@
// WebGLWorker client code
+function assert(x) {
+ if (!x) throw 'failed assert';
+}
+
function WebGLClient() {
var objects = {};
@@ -15,20 +19,26 @@ function WebGLClient() {
case 'attachShader': args[0] = objects[args[0]]; args[1] = objects[args[1]]; break;
case 'bindBuffer': args[1] = objects[args[1]]; break;
}
+ return args;
}
function renderCommands(buffer) {
var ctx = Module.ctx;
var i = 0;
var len = buffer.length;
+ //dump('issuing commands, buffer len: ' + len + '\n');
while (i < len) {
var command = buffer[i++];
+ assert(typeof command === 'string')
var numArgs = buffer[i++];
+ //dump('issue ' + [command, numArgs, 'peek:' + buffer.slice(i, i+5)] + '\n');
if (numArgs === 0) {
+ //dump('issue: ' + command + '\n');
ctx[command]();
} else if (numArgs > 0) {
var args = fixArgs(command, buffer.slice(i, i+numArgs));
i += numArgs;
+ //dump('issue+: ' + command + '(' + args + '), ' + numArgs + '\n');
ctx[command].apply(ctx, args);
} else {
// negative means a constructor, last argument is the id to save as
@@ -36,8 +46,10 @@ function WebGLClient() {
var args = fixArgs(command, buffer.slice(i, i+numArgs));
i += numArgs;
var id = buffer[i++];
+ //dump('issue-: ' + command + '(' + args + '), ' + numArgs + '\n');
objects[id] = ctx[command].apply(ctx, args);
}
+ assert(i <= len);
}
}