是否可以使用WebGL读取顶点着色器中的纹理?
我写了WebGL page(只是为了尝试一下)并使用Chrome 7进行测试。我一升级到Chrome 8,就停止了工作。我仔细检查了webgl是否已启用。错误是:
'texture2D':找不到匹配的重载函数
当我用一个常量替换对texture2D的调用时,它可以工作。 使用相同纹理的片段着色器中的纹理访问也可以。
有人有什么想法吗?我特别担心升级Chrome会导致它崩溃。
更新:它适用于firefox 4 beta。我报告了Chrome的一个错误 - 问题65340
更新2:现在可以在Firefox和Chrome中使用
答案 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。