WebGL:顶点着色器中的纹理访问?

时间:2010-12-03 20:00:02

标签: textures webgl vertex-shader

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

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

  

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

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

有人有什么想法吗?我特别担心升级Chrome会导致它崩溃。

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

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

2 个答案:

答案 0 :(得分:6)

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

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

您可以使用Thatcher Ulrich的

来比较您的FF和Chrome版本

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

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

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

答案 1 :(得分:2)

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

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

您可以尝试使用“--use-gl = desktop”运行Chrome,因此它将使用OpenGL渲染后端而不是角度。 您使用Chrome 8.0.552.215测试版时,您的网站不适用于我,但它没有提供您提到的错误,我在Chrome 9.0.597.10 canary版本上没有使用Land上的标记AND。