Просто предположение, но я думаю, что вам нужно изменить исходный код 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.Поскольку текстура оставит только что созданную границу, вы можете запросить текстуру, как показано выше.