Создавайте текстуры в javascript и WebGL и идентифицируйте их в WebAssembly - PullRequest
0 голосов
/ 10 марта 2019

Я хочу создать несколько текстур из HTMLVideoElement с WebGL и продолжить работу с ними в части WebAssembly. Я использую некоторый контекст из-за emscripten_webgl_create_context .

В OpenGL я могу создать текстуру с glGenTextures и иметь указатель на текстуру.

Можно ли каким-либо образом создать текстуру в части Javascript (с помощью WebGL) и вставить действительный указатель или любой другой идентификатор в часть WebAssembly, чтобы я мог идентифицировать текстуру?

1 Ответ

1 голос
/ 10 марта 2019

Просто предположение, но я думаю, что вам нужно изменить исходный код emscripten OpenGL.Если вы посмотрите, то увидите, что объекты WebGL связаны с идентификатором здесь .Вам нужно было бы добавить функцию, чтобы иметь возможность регистрировать внешние объекты JavaScript WebGL здесь, или вам нужно было бы добавить функцию, позволяющую C ++ создавать идентификатор, а затем получать объекты из JavaScript.

Примечание: в одну сторонуВы можете сделать второе (создать объект в C ++, передать его в JavaSCript) без изменения источника emscripten: создать идентификатор в C ++, связать его, затем вызвать JavaScript и запросить его у JavaScript.Другими словами

 GLuint tex;
 glGenTextures(1, tex);
 glBindTexture(GL_TEXTURE_2D, tex);

.. сейчас вызовите некоторую функцию JavaScript , которую вы сделали ..

 function someJSFunction() {
   // look up the currently bound TEXTURE_2D
   const tex = gl.getParameter(gl.TEXTURE_BINDING_2D);
   ...

Идентификатор, используемый в C ++, взломан на WebGLTexture объект из библиотеки empscripten OpenGL, поэтому

 const id = tex.name

Теперь вы можете передавать id обратно в C ++ в любое время, когда захотите обратиться к текстуре

Кроме того, используя приведенный выше код, вы можете создатьФункция C ++, которая выделяет одну текстуру в C ++, которую вы можете вызвать из JavaScript.Поскольку текстура оставит только что созданную границу, вы можете запросить текстуру, как показано выше.

...