2010-12-03 80 views
6

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

我写了一个WebGL page(只是为了试试),并使用Chrome 7进行测试。一旦我升级到Chrome 8,它就停止工作。我再次检查webgl已启用。错误是:

“的Texture2D”:没有匹配的重载函数发现

当我更换调用的Texture2D以恒定的,它的工作原理。 使用相同纹理的片段着色器中的纹理访问也适用。

任何人有任何想法?我特别感慨的是,升级Chrome导致其中断。

更新:它工作在Firefox 4测试版。我报道了浏览器的错误 - 问题65340

更新2:现在在Chrome在Firefox和Chrome

+0

我认为这可能是一些实现的限制。 – andrewmu 2010-12-03 20:23:11

+0

我怀疑这是故意的。这会限制很多技术(例如位移映射)。 – sharoz 2010-12-03 21:17:19

回答

5

它不是一个真正的 '错误'。

顶点纹理访问不是OpenGL ES 2的必需特性,它是WebGL规范的基础。我怀疑可能发生的事情是,虽然您的底层GL驱动程序支持顶点纹理访问,但现在您已经使用Angle切换到Chrome,并且Angle不会将顶点纹理访问报告为可用。

您可以通过比较你的FF和Chrome版本撒切尔Ulrich的

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

这有MAX_VERTEX_TEXTURE_IMAGE_UNITS参数(接近尾声)的Chrome /角度始终报告0.t

另一件事检查是你使用的是正确的texture2D语法 - 规范发生了变化,可能FF是stil支持较老的语法。

+0

该网站是伟大的。谢谢。 它实际上在Chrome 7中工作(我试图降级)。任何想法为什么他们会放弃这个功能?阻止硬件的功能有什么好处吗? – sharoz 2010-12-06 04:09:02

2

它想评论,但我没有声望。

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

您可以尝试使用“--use-gl = desktop”运行Chrome,因此它将使用OpenGL渲染后端而不是Angle。 您的网站在Chrome 8.0.552.215测试版中不适用于我,但它不会提供您提到的错误,我在Chrome 9.0.597.10金丝雀版上得到的错误信息与Minefield上的标志位无关。

相关问题