【发布时间】:2012-11-02 04:29:55
【问题描述】:
我对 WebGL 有疑问。
有时,当我在我的应用程序中添加一个新的着色器时,当我在我的 2D 绘图函数中设置我的图像绘图着色器的统一时,我开始每帧都收到 uniform4f: location not for current program 错误(显示在 Chrome 控制台中)。
虽然我之前几次遇到同样的错误,但通过随机未知操作来修复它们并不难。然而,当我添加一个屏幕扭曲着色器时,我尽我所能,甚至glFinish(我认为错误是由于不同步而发生的),但没有任何帮助。
当我尝试在控制台绘图功能中设置我的 2D 图像 shader 的 vec4 制服时,会发生错误。如果我将控制台绘制函数和菜单绘制函数互换,菜单不会被绘制。
这里是我的程序创建和切换功能的源代码:http://pastebin.com/zDEWWgKV
如果我从以下列表中执行任何操作,错误就会停止:
- 关闭菜单。
- 加载地图并进行一些 3D 渲染(导致程序切换至少 4 次)。
- 启用屏幕扭曲(导致程序切换 1 次)。
谁能告诉我,什么可能导致错误,我该如何解决?
【问题讨论】:
-
我认为这意味着您正在为一个不是当前程序的程序设置制服(即最后一个传递给
useProgram())。您可以为此添加一些检查以确保。
标签: opengl-es glsl webgl uniform