从 Asm.js/emscripten 启用 WebGL 扩展?

Posted

技术标签:

【中文标题】从 Asm.js/emscripten 启用 WebGL 扩展?【英文标题】:Enable WebGL-extensions from Asm.js/emscripten? 【发布时间】:2014-11-04 13:18:23 【问题描述】:

如何从 asm.js/emscripten 启用 WebGL 扩展? 我想运行相当于 javascript 代码 'var float_texture_ext = gl.getExtension('OES_texture_float');' 的代码,当然我可以从 ASM_JS() 宏中执行此操作,但我不知道全局 gl 的名称是什么强>-对象?

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

【问题讨论】:

另外,我想在没有 -FULL-ES2 的情况下编译为 glDrawArray 仿真,我对此不感兴趣。 【参考方案1】:

我会先说你不应该像这样使用 Emscripten。就个人而言,我会使用 GLFW3 和 GLEW 来管理窗口和扩展。当使用 emcc 或 em++(emscripten 编译器)时,它们会将窗口调用更改为 webgl 上下文创建等等。

但现在要回答了。如果你对使用 GLFW3 不感兴趣,你将不得不使用特定的 Emscripten 方法。没有任何全局“gl-object”。

如果您希望启用所有扩展程序,您可以使用以下方法:

EM_BOOL enableExtensionsByDefault

如果为“真”,则所有与 GLES2 兼容且不影响性能的 WebGL 后将自动为您启用扩展程序 上下文已创建。

如果为“false”,则不启用任何扩展 默认情况下,需要手动调用 “emscripten_webgl_enable_extension()”启用每个扩展 你想使用的。默认值:“真”。

如果您希望启用特定的扩展程序,您可以使用以下方法:

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 *extension)

在给定的上下文中启用给定的扩展。

参数:

context (ESCRIPTEN_WEBGL_CONTEXT_HANDLE) -- WebGL 要启用扩展的上下文。

extension (*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

【讨论】:

以上是关于从 Asm.js/emscripten 启用 WebGL 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

debian 中安装 phpmyadmin 并启用多服务器配置

在 docker 应用程序中启用 webpack 热重载

如何在 REST API 上直接启用托管元数据字段的过滤器?

Oracle:从 WE8ISO8859P1 转换为 AL32UTF8

css 从/ files启动随机子横幅图像 - 示例http://www.grundyconstructions.com.au/who_are_we.html

css 从/ files启动随机子横幅图像 - 示例http://www.grundyconstructions.com.au/who_are_we.html