5

这可能就像我在 Chrome 或 Firefox 中的愚蠢设置一样简单,但我只是不知道去哪里弄清楚是那个还是别的什么。

我试图弄清楚的基本事情是为什么浏览器之间的扩展支持如此不同。

例如,转到http://prideout.net/recipes/ExtensionViewer.html

对于 FireFox,我得到

OES_texture_float (google) (registry)
OES_standard_derivatives (google) (registry)
EXT_texture_filter_anisotropic (google) (registry)
MOZ_WEBGL_lose_context (google) (registry)
WEBGL_lose_context (google) (registry)
MOZ_WEBGL_compressed_texture_s3tc (google) (registry)
WEBGL_compressed_texture_s3tc (google) (registry)

但在 Chrome 中我得到:

OES_standard_derivatives (google) (registry)
WEBKIT_EXT_texture_filter_anisotropic (google) (registry)
OES_vertex_array_object (google) (registry)
OES_element_index_uint (google) (registry)
WEBGL_lose_context (google) (registry)

注意缺失OES_texture_float

我注意到我确实(或确实)似乎有一个与 AMD 相关的浮点扩展,但我不知道哪个页面显示我有那个。我有一种感觉,无论显示它是旧版本的 Chrome。

我知道我的卡支持浮点纹理(至少在某种程度上),并且每当我在 Firefox 中访问需要浮点纹理的页面时,演示都运行良好。

如果有什么我想弄清楚的,我必须做的是让浮点纹理在我的机器上的 Chrome 中工作。使用 WebGL 可以做的一些最酷的事情需要使用浮点纹理扩展。

我的问题是,据说 Firefox 和 Chrome 都使用 ANGLE,所以不都支持相同的扩展吗?

4

3 回答 3

3

阅读MDN的WebGL 最佳实践页面:

  • 即使支持 OES_texture_float 扩展,也可能不支持渲染到浮点纹理。通常,这在当前的移动硬件上会失败。要检查这是否受支持,您必须调用 WebGL checkFramebufferStatus() 函数。

这是一个硬件问题,它至少应该在现代专用显卡上工作,但您需要一些变通办法或回退到“较弱”的设备,如平板电脑和手机。

于 2013-07-11T07:23:48.083 回答
3

要获取您平台上支持的扩展列表,请使用

var extensions = gl.getSupportedExtensions();

它返回一个字符串数组。该数组取决于许多因素:

  • 您拥有的硬件和驱动程序
  • 浏览器(火狐/Chrome/其他)
  • 您的浏览器版本
  • 您请求的 WebGL 上下文版本(当前为 1 或 2)

在 2015 年使用 Intel Iris Graphics 6100 的 mac book pro 上,我今天(16.05.2017)

来自 Chrome 的 26 个传播 WebGL 1.0 扩展:

[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_disjoint_timer_query',
  'EXT_frag_depth',
  'EXT_shader_texture_lod',
  'EXT_sRGB',
  'EXT_texture_filter_anisotropic',
  'WEBKIT_EXT_texture_filter_anisotropic',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_float_linear',
  'OES_texture_half_float',
  'OES_texture_half_float_linear',
  'OES_vertex_array_object',
  'WEBGL_compressed_texture_s3tc',
  'WEBKIT_WEBGL_compressed_texture_s3tc',
  'WEBGL_compressed_texture_s3tc_srgb',
  'WEBKIT_WEBGL_compressed_texture_s3tc_srgb',
  'WEBGL_debug_renderer_info',
  'WEBGL_debug_shaders',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
  'WEBGL_lose_context',
  'WEBKIT_WEBGL_lose_context'
]

来自 Firefox 的 23 个传播 WebGL 1.0 扩展:

[
  'ANGLE_instanced_arrays',
  'EXT_blend_minmax',
  'EXT_color_buffer_half_float',
  'EXT_frag_depth',
  'EXT_sRGB',
  'EXT_shader_texture_lod',
  'EXT_texture_filter_anisotropic',
  'OES_element_index_uint',
  'OES_standard_derivatives',
  'OES_texture_float',
  'OES_texture_float_linear',
  'OES_texture_half_float',
  'OES_texture_half_float_linear',
  'OES_vertex_array_object',
  'WEBGL_color_buffer_float',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_debug_renderer_info',
  'WEBGL_depth_texture',
  'WEBGL_draw_buffers',
  'WEBGL_lose_context',
  'MOZ_WEBGL_lose_context',
  'MOZ_WEBGL_compressed_texture_s3tc',
  'MOZ_WEBGL_depth_texture'
]

10 个扩展的 WebGL 2.0 扩展,来自 Chrome:

[
  'EXT_color_buffer_float',
  'EXT_disjoint_timer_query_webgl2',
  'EXT_texture_filter_anisotropic',
  'OES_texture_float_linear',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_compressed_texture_s3tc_srgb',
  'WEBGL_debug_renderer_info',
  'WEBGL_debug_shaders',
  'WEBGL_get_buffer_sub_data_async',
  'WEBGL_lose_context'
]

来自 Firefox 的 8 个传播 WebGL 2.0 扩展:

[
  'EXT_color_buffer_float',
  'EXT_texture_filter_anisotropic',
  'EXT_disjoint_timer_query',
  'OES_texture_float_linear',
  'WEBGL_compressed_texture_s3tc',
  'WEBGL_lose_context',
  'MOZ_WEBGL_lose_context',
  'MOZ_WEBGL_compressed_texture_s3tc'
]

有关更多有用信息,您可以查看MDN

在这里您可以找到非常方便的工具来在线检查您的浏览器。

您可以在此处找到有关 webgl 扩展支持的全球统计数据。

检查以获取有关 WebGL2 中提升的扩展的信息。

于 2017-05-16T07:10:14.897 回答
2

我应该保存有关我当时使用的 Chrome 版本的信息。截至 2013 年 8 月 14 日(可能更早),这台机器上的 Chrome

Browser: 5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Platform: Win32

现在支持浮点纹理。http://prideout.net/recipes/ExtensionViewer.html提供以下内容:

WEBKIT_EXT_texture_filter_anisotropic (google) (registry)
OES_element_index_uint (google) (registry)
OES_standard_derivatives (google) (registry)
OES_texture_float (google) (registry)
OES_vertex_array_object (google) (registry)
WEBKIT_WEBGL_compressed_texture_s3tc (google) (registry)
WEBKIT_WEBGL_depth_texture (google) (registry)
WEBGL_lose_context (google) (registry)

这仍然不能解释为什么 Firefox 和 Chrome 之间存在差异,尽管据我所知,这可能只是 ANGLE 库的不同版本。

于 2013-08-14T22:47:21.830 回答