aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-06-01 10:25:38 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-06-01 10:25:38 -0700
commitd4562a7d6ce17f6634af1f06cb46c18f9fde4eae (patch)
tree4ade3495ba8210116a6f5e29fb4abf8ccc3c33bf /src
parent62d89ceec3f6c00768d019d109b0f31420481157 (diff)
fix handling of glUseProgram(0) and gl_ModelViewMatrixTranspose
Diffstat (limited to 'src')
-rw-r--r--src/library_gl.js20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 2be48ba1..44a0fefb 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -816,7 +816,7 @@ var LibraryGL = {
},
glUseProgram: function(program) {
- Module.ctx.useProgram(GL.programs[program]);
+ Module.ctx.useProgram(program ? GL.programs[program] : null);
},
glValidateProgram: function(program) {
@@ -969,6 +969,9 @@ var LibraryGL = {
source = source.replace(/gl_ProjectionMatrix/g, 'u_projection');
if (old != source) need_pm = 1;
old = source;
+ source = source.replace(/gl_ModelViewMatrixTranspose\[2\]/g, 'vec4(u_modelView[0][0], u_modelView[1][0], u_modelView[2][0], u_modelView[3][0])'); // XXX extremely inefficient
+ if (old != source) need_mm = 1;
+ old = source;
source = source.replace(/gl_ModelViewMatrix/g, 'u_modelView');
if (old != source) need_mm = 1;
old = source;
@@ -977,9 +980,6 @@ var LibraryGL = {
old = source;
source = source.replace(/gl_ModelViewProjectionMatrix/g, '(u_projection * u_modelView)');
if (old != source) need_pm = need_mm = 1;
- old = source;
- source = source.replace(/gl_ModelViewMatrixTranspose\[2\]/g, 'vec3(u_modelView[0][0], u_modelView[1][0], u_modelView[2][0])'); // XXX extremely inefficient
- if (old != source) need_mm = 1;
if (need_pv && !has_pv) source = 'attribute vec4 a_position; \n' + source;
if (need_mm && !has_mm) source = 'uniform mat4 u_modelView; \n' + source;
if (need_pm && !has_pm) source = 'uniform mat4 u_projection; \n' + source;
@@ -1069,11 +1069,13 @@ var LibraryGL = {
_glUseProgram = function(program) {
#if GL_DEBUG
if (GL.debug) {
- console.log('[using program with shaders:]');
- GL.programShaders[program].forEach(function(shader) {
- console.log(' shader ' + shader + ', original source: ' + GL.shaderOriginalSources[shader]);
- console.log(' Source: ' + GL.shaderSources[shader]);
- });
+ console.log('[using program with shaders]');
+ if (program) {
+ GL.programShaders[program].forEach(function(shader) {
+ console.log(' shader ' + shader + ', original source: ' + GL.shaderOriginalSources[shader]);
+ console.log(' Source: ' + GL.shaderSources[shader]);
+ });
+ }
}
#endif
GL.currProgram = program;