Включить WebGL-расширения из Asm.js / emscripten?

Как включить WebGL-расширения от asm.js / emscripten?
Я хотел бы запустить эквивалент кода JavaScript 'var float_texture_ext = gl.getExtension('OES_texture_float');' какой, конечно, я мог сделать из ASM_JS() макрос, но я не знаю, как называется глобальный Г.Л.-объект?

https://developer.mozilla.org/en-US/docs/Web/WebGL/Using_Extensions

3

Решение

Я предвосхищу это, сказав, что вы не должны использовать Emscripten, как это. Лично я бы использовал GLFW3 и GLEW для управления окнами и расширениями. При использовании emcc или em ++ (компиляторы emscripten) они преобразуют вызовы окон в создание контекста webgl, а что нет.

Но теперь к ответу. Если вы не заинтересованы в использовании GLFW3, вам придется использовать определенные методы Emscripten. Не существует глобального «gl-объекта».

Если вы хотите включить все расширения, вы можете использовать следующее:

EM_BOOL enableExtensionsByDefault

  • Если «true», все GLES2-совместимые не влияющие на производительность WebGL
    расширения будут автоматически включены для вас после
    контекст был создан.

  • Если «ложь», расширения не включены
    по умолчанию, и вам нужно вручную позвонить
    «emscripten_webgl_enable_extension ()» для включения каждого расширения
    что вы хотите использовать. Значение по умолчанию: «true».

Если вы хотите включить определенное расширение, вы можете использовать следующее:

EMSCRIPTEN_WEBGL_CONTEXT_HANDLE emscripten_webgl_get_current_context ()

Возвращает активный в настоящий момент контекст рендеринга WebGL или 0, если нет
контекст активен. Вызов любых функций WebGL, когда нет
активный контекст рендеринга не определен и может вызывать JavaScript
исключение.

Возвращает:

  • Текущий активный контекст рендеринга WebGL, или

  • 0, если контекст не активен.

Тип возврата: «EMSCRIPTEN_WEBGL_CONTEXT_HANDLE»

чтобы получить дескриптор контекста WebGL и передать его в следующий метод:

EM_BOOL emscripten_webgl_enable_extension (контекст EMSCRIPTEN_WEBGL_CONTEXT_HANDLE, расширение const char *)

Включает данное расширение в заданном контексте.

Параметры:

  • контекст (EMSCRIPTEN_WEBGL_CONTEXT_HANDLE) — WebGL
    контекст, в котором должно быть включено расширение.

  • расширение (* const char **) — Строка, идентифицирующая расширение WebGL. Например «OES_texture_float».

Возвращает:

  • EM_TRUE, если данное расширение поддерживается контекстом, и

  • EM_FALSE, если расширение не было доступно.

Тип возврата: «EM_BOOL»

Вся необходимая информация находится здесь:

http://kripken.github.io/emscripten-site/docs/api_reference/html5.h.html#html5-h

3

Другие решения