【问题标题】:Enable WebGL-extensions from Asm.js/emscripten?从 Asm.js/emscripten 启用 WebGL 扩展?
【发布时间】: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 仿真,我对此不感兴趣。

标签: c++ webgl emscripten asm.js


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多