Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Headless WebGL2 / OpenGL ES 3 runtime for Node.js backed by ANGLE.

This package is a fork of node-gles. It preserves the existing WebGL1 surface and exposes additional GLES3-backed APIs through WebGL2-compatible JavaScript method names.

WebGL2 Coverage

FeatureStatus
Runtime and context lifecycle
WebGL1 API and selected extension aliases
WebGL2 core method names
VAO, instancing, draw buffers, and multisample framebuffers
Buffer, sampler, sync, and PBO operations
WebGL2 uniform and matrix APIs
3D textures and 2D texture arrays
Queries, transform feedback, and integer vertex attributes
Browser-compatible overloads and error semantics🟡
Browser-complete WebGL2 conformance

Platform Support

PlatformCI
Linux x64tested
Linux arm64tested
macOS arm64tested
macOS x64build only
Windows x64tested
Windows arm64tested

macOS x64 is build-only in CI because hosted-runner smoke currently hits Error: No display.

Extension Support

getSupportedExtensions() reports WebGL extension names, not raw GL_* ANGLE extension strings. Runtime availability still depends on the selected ANGLE backend.

Exposed

  • ANGLE_instanced_arrays
  • EXT_blend_minmax
  • EXT_color_buffer_float / WEBGL_color_buffer_float
  • EXT_color_buffer_half_float
  • EXT_frag_depth
  • EXT_float_blend
  • EXT_sRGB
  • EXT_shader_texture_lod
  • EXT_texture_filter_anisotropic
  • EXT_texture_mirror_clamp_to_edge
  • OES_element_index_uint
  • OES_standard_derivatives
  • OES_texture_float / OES_texture_float_linear
  • OES_texture_half_float / OES_texture_half_float_linear
  • OES_vertex_array_object
  • WEBGL_compressed_texture_s3tc / WEBGL_compressed_texture_s3tc_srgb
  • WEBGL_debug_renderer_info
  • WEBGL_depth_texture
  • WEBGL_draw_buffers
  • WEBGL_lose_context
  • EXT_disjoint_timer_query_webgl2

Not Exposed

  • EXT_disjoint_timer_query (WebGL1 variant)

Install

From npm:

npm install node-gles-webgl2

Usage

constnodeGles=require("node-gles-webgl2");constgl=nodeGles.createWebGLRenderingContext({width: 800,height: 500,majorVersion: 3,minorVersion: 0,});console.log(gl.getParameter(gl.VERSION));

Context Options

  • width / height: drawing buffer size, default 1.
  • majorVersion / minorVersion: requested OpenGL ES version, default 3.0.
  • webGLCompatibility: requests ANGLE WebGL compatibility mode. The legacy misspelled webGLCompability option is still accepted as an alias.
  • enabledExtensions: optional WebGL extension allowlist. When set, only listed supported extensions are exposed.
  • disabledExtensions: optional WebGL extension blocklist. This takes precedence over enabledExtensions.

Context Lifecycle

For batch rendering, call gl.destroy() or gl.dispose() after the final readPixels() for a context. This releases the native EGL context and pbuffer surface immediately instead of waiting for JavaScript garbage collection.

constgl=nodeGles.createWebGLRenderingContext({width: 3000,height: 2000});try{// render and readPixels}finally{gl.destroy();}

Build From Source

From git:

git clone https://github.com/dsafdsaf132/node-gles-webgl2.git
cd node-gles-webgl2
npm install --ignore-scripts
node scripts/install.js
npm run build

From a release source tarball, use the same commands after extracting the archive.

ANGLE headers are bundled in the main package. Prebuilt libraries are published as platform packages for Linux, macOS, and Windows on x64 and arm64. npm automatically installs only the package matching the current platform, so installation does not fetch a separate ANGLE release archive.

The platform packages are maintained under packages/angle-*. scripts/install.js validates the selected package and builds the native addon with node-gyp. The bundled ANGLE revision and platform inventory are recorded in deps/angle/angle-build.json. ANGLE is distributed under its BSD-style license in deps/angle/LICENSE and each platform package.

The publish workflow releases the six platform packages before the main package. The first release requires an npm granular access token in the NPM_TOKEN repository secret because npm trusted publishing can only be configured after a package exists. After bootstrapping, configure publish.yml as the trusted publisher for each platform package.

On Linux, the native build needs X11 development headers. On Ubuntu:

sudo apt-get install -y build-essential python3 libx11-dev libxext-dev

License

This package is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

node-gles-webgl2 is a fork of node-gles. Original source files retain their upstream copyright notices, including Google LLC / Google Inc. notices where applicable. Modifications in this repository add WebGL2 / OpenGL ES 3 bindings, packaging, CI, and publishing workflows for node-gles-webgl2.

About

Headless WebGL2 for Node.js

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages