Как включить 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
Я предвосхищу это, сказав, что вы не должны использовать 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