Skip to content

Commit b03f00a

Browse files
committed
Merge pull request #2530 from Daft-Freak/drawBuffers
support glDrawBuffers
2 parents 172e8af + d92a592 commit b03f00a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/library_gl.js

+15-1
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,8 @@ var LibraryGL = {
698698
// Extension available from Firefox 25 and WebKit
699699
GL.vaoExt = Module.ctx.getExtension('OES_vertex_array_object');
700700

701+
GL.drawBuffersExt = Module.ctx.getExtension('WEBGL_draw_buffers');
702+
701703
// These are the 'safe' feature-enabling extensions that don't add any performance impact related to e.g. debugging, and
702704
// should be enabled by default so that client GLES2/GL code will not need to go through extra hoops to get its stuff working.
703705
// 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 = {
54235425
glVertexAttribDivisorARB: 'glVertexAttribDivisor',
54245426
glDrawArraysInstancedARB: 'glDrawArraysInstanced',
54255427
glDrawElementsInstancedARB: 'glDrawElementsInstanced',
5426-
5428+
5429+
5430+
glDrawBuffers__sig: 'vii',
5431+
glDrawBuffers: function(n, bufs) {
5432+
#if GL_ASSERTIONS
5433+
assert(GL.drawBuffersExt, 'Must have WEBGL_draw_buffers extension to use drawBuffers');
5434+
#endif
5435+
var bufArray = [];
5436+
for (var i = 0; i < n; i++)
5437+
bufArray.push({{{ makeGetValue('bufs', 'i*4', 'i32') }}});
5438+
5439+
GL.drawBuffersExt.drawBuffersWEBGL(bufArray);
5440+
},
54275441
// signatures of simple pass-through functions, see later
54285442

54295443
glActiveTexture__sig: 'vi',

system/lib/gl.c

+1
Original file line numberDiff line numberDiff line change
@@ -1724,6 +1724,7 @@ void* emscripten_GetProcAddress(const char *name_) {
17241724
else if (!strcmp(name, "glVertexAttrib4f")) return emscripten_glVertexAttrib4f;
17251725
else if (!strcmp(name, "glCopyTexImage2D")) return emscripten_glCopyTexImage2D;
17261726
else if (!strcmp(name, "glCopyTexSubImage2D")) return emscripten_glCopyTexSubImage2D;
1727+
else if (!strcmp(name, "glDrawBuffers")) return emscripten_glDrawBuffers;
17271728

17281729
fprintf(stderr, "bad name in getProcAddress: %s | %s\n", name_, name);
17291730
return 0;

0 commit comments

Comments
 (0)