首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebGL2中提升扩展的完整列表

WebGL2中提升扩展的完整列表
EN

Stack Overflow用户
提问于 2017-05-15 19:52:42
回答 1查看 897关注 0票数 1

我有机会更新我们用在WebGL2上的渲染器。为了使呈现器尽可能地向后兼容,我们继续跟踪加载的扩展(就像升级之前那样),并模拟扩展,即使这种扩展被提升了。渲染器使用扩展做一些相关的事情。从外面看,一切都很透明。

为了使它顺利运行,我需要完整的升级扩展列表。几乎没有发现博客,但这些列表还不完整。我在GitHub上发现的其他列表看上去是错误的,因为它们有冗余的扩展,实际上并没有升级或删除。我在医生里发现的不多。

所以,我做了一些实证研究,发现:

代码语言:javascript
复制
// 12 extensions were promoted in WebGL2 without surprises
[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_frag_depth',
  'EXT_shader_texture_lod',
  'EXT_sRGB',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_half_float',
  'OES_vertex_array_object',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
]

特别是我关心的是OES_texture_float_linearOES_texture_half_float_linear扩展,它们不在我的列表中。WebGL2的实现--我在本地有OES_texture_float_linear,但没有OES_texture_half_float_linear,而WebGL有这两种。我知道在WebGL1上下文中,OES_texture_float_linear的行为有点不同,所以我的直觉说可能会有问题。

另外,disjoint_timer_query扩展发生了一些奇怪的事情。该扩展部分合并在一起。WebGL2上下文获得了该扩展的一些属性。我在Chrome中有disjoint_timer_query_webgl2,除了一个被重命名为getQueryParametergetQueryObject之外,它拥有所有属性,但是在火狐中,disjoint_timer_query扩展仍然可以在WebGL2上下文中使用。

那么,名单完整了吗?特别是,OES_texture_half_float_linear是否应该被列入名单?为什么它消失了,而类似的OES_texture_float_linear却留下来了呢?

感谢你的帮助。

-

因此,最终的答案(可能)应该是:

代码语言:javascript
复制
// 14 extensions were promoted in WebGL2
[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_frag_depth',
  'EXT_shader_texture_lod',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_half_float',
  'OES_vertex_array_object',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
  /* with caveats */
  'EXT_sRGB',
  'OES_texture_half_float_linear',
  'EXT_disjoint_timer_query',
]

请注意,最后三个扩展都得到了推广,并附加了注意事项。扩展EXT_sRGB丢失了一个常量SRGB_ALPHA。推广的OES_texture_half_float_linear被促进,而类似的OES_texture_float_linear则没有。延伸EXT_disjoint_timer_query部分促进。该扩展的一些属性出现在WebGL2上下文中,而其他属性则被移动到EXT_disjoint_timer_query_webgl2扩展中。此外,目前( 2017.05.16 )火狐WebGL2上下文仍然有EXT_disjoint_timer_query扩展,没有EXT_disjoint_timer_query_webgl2扩展。

EN

回答 1

Stack Overflow用户

发布于 2017-05-16 04:25:51

WebGL2需要支持半点和浮点纹理。它还需要过滤一半纹理,但它不需要支持过滤浮点纹理。

这就是为什么OES_texture_half_float_linear缺失和OES_texture_float_linear是可选的。大多数移动设备不支持浮点纹理的过滤。

换句话说,您应该将OES_texture_half_float_linear添加到升级扩展列表中。

另一个具有奇怪历史的扩展是EXT_color_buffer_float。WebGL1在没有它的情况下发货。假定它呈现为浮点纹理,您所需要的首先是OES_texture_float,然后创建浮点纹理,将其附加到框架缓冲区并检查gl.checkFramebufferStatus。但是,在WebGL发布大约一年后,有人指出这还不够,因此添加了EXT_color_buffer_float,但是没有强制执行,因为这样做会破坏页面。

在WebGL2中,它是强制的。如果不启用EXT_color_buffer_float,则无法将其呈现为浮点纹理。EXT_color_buffer_half_float也一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43987719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档