Last active
January 9, 2021 03:15
-
-
Save robertleeplummerjr/cce00202e08954cf8df512eed838de66 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// at end of list of items that call "JS_GL_METHOD" | |
JS_GL_METHOD("drawBuffers", DrawBuffers); | |
JS_GL_METHOD("extWEBGL_draw_buffers", EXTWEBGL_draw_buffers); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// add to bottom of list of items that use "eglGetProcAddress" | |
glDrawBuffers=reinterpret_cast<PFNGLDRAWBUFFERSEXTPROC>(eglGetProcAddress("glDrawBuffersEXT")); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// at end | |
PFNGLDRAWBUFFERSEXTPROC glDrawBuffers; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// at bottom add: | |
GL_METHOD(DrawBuffers) { | |
GL_BOILERPLATE; | |
v8::Local<v8::Array> buffersArray = v8::Local<v8::Array>::Cast(info[0]); | |
GLuint numBuffers = buffersArray->Length(); | |
GLenum buffers[numBuffers]; | |
for (size_t i = 0; i < numBuffers; i++) { | |
int bufferAttachment = buffersArray->Get(i)->Uint32Value(); | |
if (bufferAttachment < GL_COLOR_ATTACHMENT0_EXT || bufferAttachment > GL_COLOR_ATTACHMENT15_EXT) { | |
Nan::ThrowError("Invalid color attachments"); | |
} | |
buffers[i] = bufferAttachment; | |
} | |
(inst->glDrawBuffers)(numBuffers, buffers); | |
} | |
GL_METHOD(EXTWEBGL_draw_buffers) { | |
GL_BOILERPLATE; | |
v8::Local<v8::Object> result = Nan::New<v8::Object>(); | |
// Nan::SetMethod(result, "drawBuffersWEBGL", DrawBuffers); | |
result->Set(Nan::New("COLOR_ATTACHMENT0_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT0_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT1_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT1_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT2_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT2_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT3_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT3_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT4_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT4_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT5_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT5_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT6_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT6_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT7_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT7_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT8_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT8_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT9_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT9_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT10_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT10_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT11_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT11_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT12_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT12_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT13_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT13_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT14_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT14_EXT)); | |
result->Set(Nan::New("COLOR_ATTACHMENT15_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_COLOR_ATTACHMENT15_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER0_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER0_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER1_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER1_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER2_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER2_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER3_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER3_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER4_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER4_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER5_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER5_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER6_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER6_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER7_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER7_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER8_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER8_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER9_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER9_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER10_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER10_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER11_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER11_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER12_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER12_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER13_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER13_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER14_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER14_EXT)); | |
result->Set(Nan::New("DRAW_BUFFER15_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_DRAW_BUFFER15_EXT)); | |
result->Set(Nan::New("MAX_COLOR_ATTACHMENTS_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_MAX_COLOR_ATTACHMENTS_EXT)); | |
result->Set(Nan::New("MAX_DRAW_BUFFERS_WEBGL").ToLocalChecked(), Nan::New<v8::Number>(GL_MAX_DRAW_BUFFERS_EXT)); | |
info.GetReturnValue().Set(result); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// included for context, but already in webgl.js | |
var gl = nativeGL.WebGLRenderingContext.prototype | |
// extend getExtension with the following | |
gl.getExtension = function getExtension (name) { | |
var str = name.toLowerCase() | |
if (str in this._extensions) { | |
return this._extensions[str] | |
} | |
var ext = null | |
switch (str) { | |
case 'webgl_draw_buffers': | |
ext = this.extWEBGL_draw_buffers(); | |
ext.drawBuffersWEBGL = this.drawBuffers.bind(this) | |
break | |
} | |
if (ext) { | |
this._extensions[str] = ext | |
} | |
return ext | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment