WebGL 2.0 bindings for Duktape embeddable Javascript engine
- duktape-webgl implements fairly many WebGL 1.0 and 2.0 methods and constants.
- *_WEBGL constants and methods not available in core OpenGL are missing.
- duktape-webgl runs desktop OpenGL Core Profile beneath, not OpenGL ES to which WebGL is based.
- If you're looking for OpenGL 1.x legacy bindings, check duktape-opengl project.
- Include dukwebgl.h to your Duktape & OpenGL project.
/* Applicable OpenGL header needs to be included before dukwebgl */
#include <GL/glcorearb.h>
/* Duktape needs to be included before dukwebgl */
#include "duktape.h"
/* DUKWEBGL_IMPLEMENTATION needs to be defined in *one* source file to create the implementation. */
#define DUKWEBGL_IMPLEMENTATION
#include "dukwebgl.h"
...
/* duktape-webgl bindings will be added to the global object */
dukwebgl_bind(ctx);
...
var gl = new WebGL2RenderingContext();
// now you should be able to call WebGL methods as you wish
- JS API should resemble to WebGL specifications as much as possible
- Contradicting / differing OpenGL call logic should be in favor of WebGL specifications
- C API should be minimal, yet allowing some flexibility for power-users
- Comply to intersection of OpenGL core C API headers and WebGL 1.x - 2.x APIs
- Only support WebGL constants defined in the C API
- Users should have possibility to restrict API imports based on OpenGL core version, i.e. via define/undef
- Performance over validity
- Does not validate input
- Duktape context is assumed to be valid
- Variables passed from JS are assumed to be valid for intended OpenGL API calls
- Will attempt to pass calls to underlying OpenGL C API functions with low overhead.
- Does not validate input
- This API does not transpile GLSL versions.
- If your program does not support GLSL ES directly, then you should write shaders in a cross-platform manner or do transpiling yourself.
- You'll get a long way already by choosing correct #version preprocessor