WebGLBuffer 对象和 OpenGL 缓冲区处理 JavaScript 和 C++ 之间的互操作

WebGLBuffer object and OpenGL buffer handle interop between JavaScript and C++

我想使用 spector.js metadata API to simplify debugging of a WebGL application compiled from C++ using emscripten. Spector.js API expects JavaScript WebGLBuffer 通过 WebGL API 创建的对象。问题是如何从使用原始 OpenGL 句柄运行的 C++ 端获取它们。 我看到两个选项:

  1. 通过 emscripten C++<->JS 为 js 提供 gl 缓冲区句柄 API 并以某种方式从它们创建 WebGL 对象
  2. 在 js 端创建 WebGLBufers 并通过 C++<->JS 为 C++ 提供句柄 API

第一个选项的问题是我找不到从原始 OpenGL 缓冲区句柄创建 WebGLBuffer 的方法。 第二个选项的问题是我没有看到任何方法从 js WebGLBuffer 对象获取原始 gl 缓冲区句柄以将其转发给 C++ 代码。

也许还有其他选择?

扩充 emscripten 库。就在此处跟踪 WebGLObjects

https://github.com/emscripten-core/emscripten/blob/46df50cfd170521d91a31e0a74f2dfdeb4522968/src/library_webgl.js#L112

例如

  javascriptWebGLBuffer = $GL.buffers[openGLBufferId];
  openglBufferId = $GL.buffers.indexOf(javascriptWebGLBuffer);

另见 _glGenObject and its usage 如何为 JavaScript 和 C++

生成新的 WebGLBuffer

您可以在该文件中插入 spector。

你可以--js-library path-to-file使用你修改后的库来使用