从Asm.js/emscripten启用WebGL扩展



如何从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

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

但现在是答案。如果您对使用GLFW3不感兴趣,则必须使用特定的Emscripten方法。没有任何全局"gl对象"。

如果您希望启用所有扩展,您可以使用以下选项:

EM_BOOL启用默认扩展

  • 如果为"true",则所有GLES2兼容的非性能影响WebGL在上下文已创建。

  • 如果为"false",则不启用任何扩展默认情况下,您需要手动调用"emscripten_webgl_enable_extension()"以启用每个扩展您想要使用的。默认值:"true"。

如果您希望启用特定的扩展,您可以使用以下选项:

EMSCRIPTEN_WEBGL_CONTEXT_HANDLE EMSCRIPTEN_WEBGL_get_current_CONTEXT()

返回当前活动的WebGL呈现上下文,如果没有,则返回0上下文处于活动状态。当没有活动呈现上下文未定义,可能引发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

最新更新