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