7

是否可以使用 WebGL 从顶点着色器中读取纹理?

我写了一个WebGL 页面(只是为了尝试一下)并使用 Chrome 7 来测试它。一旦我升级到 Chrome 8,它就停止了工作。我仔细检查了 webgl 是否已启用。错误是:

“texture2D”:找不到匹配的重载函数

当我用常量替换对 texture2D 的调用时,它可以工作。使用相同纹理的片段着色器中的纹理访问也有效。

有人有想法么?我对升级 Chrome 导致它崩溃的事实感到特别震惊。

更新:它适用于 Firefox 4 beta。我报告了 Chrome 的一个错误 - 问题 65340

更新 2:它现在可以在 Firefox 和 Chrome 中使用

4

2 回答 2

6

它并不是 Chrome 中的真正“错误”。

顶点纹理访问不是 Open GL ES 2 的必需功能,它是 WebGL 规范的基础。我怀疑可能发生的情况是,尽管您的底层 GL 驱动程序支持顶点纹理访问,但现在您已经使用 Angle 切换到 Chrome,并且 Angle 并未报告该顶点纹理访问可用。

您可以使用 Thatcher Ulrich's 比较您的 FF 和 Chrome 版本

http://webgl-bench.appspot.com/

这有 MAX_VERTEX_TEXTURE_IMAGE_UNITS 参数(接近尾声)Chrome/Angle 总是报告 0.t

要检查的另一件事是您使用的是正确的 texture2D 语法 - 规范已更改,可能 FF 仍支持旧语法。

于 2010-12-05T15:01:20.887 回答
2

它想发表评论,但我没有声誉。

正如alanatmech所说,它可能与Angle有关,它将所有GL调用转发到DirectX。因此,在没有 OpenGL 驱动程序的 Windows 机器上支持 WebGL 并不是一项功能下降,其好处是。

您可以尝试使用“--use-gl=desktop”运行 Chrome,因此它将使用 OpenGL 渲染后端而不是 Angle。您的网站不适用于我使用 Chrome 8.0.552.215 测试版,但它没有给出您提到的错误,我确实在没有标志和 Minefield 的 Chrome 9.0.597.10 金丝雀版本上得到了。

于 2010-12-07T00:39:04.873 回答