aboutsummaryrefslogtreecommitdiff
path: root/src/library_gl.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/library_gl.js')
-rw-r--r--src/library_gl.js15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 6daee6fc..c98c7657 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1191,6 +1191,21 @@ var LibraryGL = {
if (program == GL.currProgram) GL.currProgram = 0;
};
+ // If attribute 0 was not bound, bind it to 0 for WebGL performance reasons. Track if 0 is free for that.
+ var zeroUsedPrograms = {};
+ var glBindAttribLocation = _glBindAttribLocation;
+ _glBindAttribLocation = function(program, index, name) {
+ if (index == 0) zeroUsedPrograms[program] = true;
+ glBindAttribLocation(program, index, name);
+ };
+ var glLinkProgram = _glLinkProgram;
+ _glLinkProgram = function(program) {
+ if (!(program in zeroUsedPrograms)) {
+ Module.ctx.bindAttribLocation(GL.programs[program], 0, 'a_position');
+ }
+ glLinkProgram(program);
+ };
+
var glBindBuffer = _glBindBuffer;
_glBindBuffer = function(target, buffer) {
glBindBuffer(target, buffer);