是否可以从纹理中读取 顶点 带有WebGL的着色器?

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

'Texture2D':找不到匹配的超载功能

当我用常数替换对纹理2D的调用时,它可以正常工作。使用相同纹理的片段着色器中的纹理访问也可行。

有人有想法么?升级Chrome导致它破裂的事实使我特别受到。

更新: 它在Firefox 4 beta中起作用。我报告了一个铬的错误 - 第65340期

更新2: 现在它在Firefox和Chrome中工作

有帮助吗?

解决方案

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

顶点纹理访问不是Open GL ES 2的必需功能,这是WebGL规范的基础。我怀疑可能发生的事情是,尽管您的基础GL驱动程序支持顶点纹理访问,但现在您使用角度切换到Chrome,而Angle不会报告该顶点纹理访问可用。

您可以使用撒切尔·乌尔里希(Thatcher Ulrich)的FF和Chrome版本比较您的FF和Chrome版本

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

这具有max_vertex_texture_image_units参数(接近末端)chrome/angle总是报告0.T

要检查的另一件事是,您使用的是正确的纹理2D语法 - 规格更改了,可能是FF支持旧语法。

其他提示

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

正如Alanatmech所说,它可能与Angle有关,Angle将所有GL呼叫转发到DirectX中。因此,在没有OpenGL驱动程序的情况下,在Windows机器上获得WebGL支持,这并不是一个功能。

您可以尝试使用“ - use-gl =桌面”运行铬,因此它将使用OpenGL渲染后端而不是角度。您的网站与Chrome 8.0.552.215 beta相比,您的网站对我不起作用,但它没有给出您提到的错误,我确实在Chrome 9.0.597.10上加拿大金丝雀构建,而无需国旗和雷菲尔德。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top