Объект WebGLBuffer и буфер OpenGL обрабатывают взаимодействие между JavaScript и C ++ - PullRequest
0 голосов
/ 03 марта 2020

Я хочу использовать spector. js API метаданных для упрощения отладки приложения WebGL, скомпилированного из C ++ с использованием emscripten. Spector. js API ожидает JavaScript WebGLBuffer объектов, созданных с помощью WebGL API. Вопрос в том, как получить их со стороны C ++, которая работает с необработанными дескрипторами OpenGL. Я вижу два варианта:

  1. Предоставление дескрипторов буфера gl для js через emscripten C ++ <-> JS API и создание из них объектов WebGL каким-либо образом
  2. Создание WebGLBufers на js side и предоставить дескрипторы C ++ через C ++ <-> JS API

Проблема с первым вариантом заключается в том, что я не могу найти способ создания WebGLBuffer из необработанного дескриптора буфера OpenGL , Проблема со вторым вариантом заключается в том, что я не вижу способа получить необработанный дескриптор буфера gl из объекта js WebGLBuffer для пересылки его в код C ++.

Может быть, есть и другие варианты?

1 Ответ

1 голос
/ 03 марта 2020

Дополнить библиотеку emscripten. Объекты WebGLO отслеживаются прямо здесь

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

Например,

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

также см. _glGenObject и его использование о том, как сгенерировать новый WebGLBuffer для JavaScript и C ++

Вы можете подключить спектор в этом файле.

Вы можете использовать --js-library path-to-file использовать вашу модифицированную библиотеку

...