aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjuj <jujjyl@gmail.com>2014-07-17 14:33:53 -0400
committerjuj <jujjyl@gmail.com>2014-07-17 14:33:53 -0400
commitb03f00a148a24129784779de703e8a2ee686f789 (patch)
treedc446a0723edf8b8e66882206cd986874328c4a6
parent172e8afdf7633bff222d4042bc99ebd080323465 (diff)
parentd92a592413491f7420f125a1119e6768d5de0f6b (diff)
Merge pull request #2530 from Daft-Freak/drawBuffers
support glDrawBuffers
-rw-r--r--src/library_gl.js16
-rw-r--r--system/lib/gl.c1
2 files changed, 16 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index ffcbef62..a4d560e7 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -698,6 +698,8 @@ var LibraryGL = {
// Extension available from Firefox 25 and WebKit
GL.vaoExt = Module.ctx.getExtension('OES_vertex_array_object');
+ GL.drawBuffersExt = Module.ctx.getExtension('WEBGL_draw_buffers');
+
// These are the 'safe' feature-enabling extensions that don't add any performance impact related to e.g. debugging, and
// should be enabled by default so that client GLES2/GL code will not need to go through extra hoops to get its stuff working.
// As new extensions are ratified at http://www.khronos.org/registry/webgl/extensions/ , feel free to add your new extensions
@@ -5423,7 +5425,19 @@ var LibraryGL = {
glVertexAttribDivisorARB: 'glVertexAttribDivisor',
glDrawArraysInstancedARB: 'glDrawArraysInstanced',
glDrawElementsInstancedARB: 'glDrawElementsInstanced',
-
+
+
+ glDrawBuffers__sig: 'vii',
+ glDrawBuffers: function(n, bufs) {
+#if GL_ASSERTIONS
+ assert(GL.drawBuffersExt, 'Must have WEBGL_draw_buffers extension to use drawBuffers');
+#endif
+ var bufArray = [];
+ for (var i = 0; i < n; i++)
+ bufArray.push({{{ makeGetValue('bufs', 'i*4', 'i32') }}});
+
+ GL.drawBuffersExt.drawBuffersWEBGL(bufArray);
+ },
// signatures of simple pass-through functions, see later
glActiveTexture__sig: 'vi',
diff --git a/system/lib/gl.c b/system/lib/gl.c
index bbc77437..33e9fd47 100644
--- a/system/lib/gl.c
+++ b/system/lib/gl.c
@@ -1724,6 +1724,7 @@ void* emscripten_GetProcAddress(const char *name_) {
else if (!strcmp(name, "glVertexAttrib4f")) return emscripten_glVertexAttrib4f;
else if (!strcmp(name, "glCopyTexImage2D")) return emscripten_glCopyTexImage2D;
else if (!strcmp(name, "glCopyTexSubImage2D")) return emscripten_glCopyTexSubImage2D;
+ else if (!strcmp(name, "glDrawBuffers")) return emscripten_glDrawBuffers;
fprintf(stderr, "bad name in getProcAddress: %s | %s\n", name_, name);
return 0;