opengl GL.GetUniformLocation总是返回ZERO(0)

时间:2017-08-08 17:37:07

标签: c# xamarin opengl-es opengl-es-3.0

使用OpenGL ES30和Xamarin / C#。

我的问题是,无论我做什么,当我打电话时:

OpenTK.Graphics.ES30.GL.GetUniformLocation(progID,“varName”);

它总是返回ZERO。 (不是-1)。

以下语句全部返回0:

int RRRRRRRR = GL.GetUniformLocation(Terrain3D.TileShader.Id, "NOTVALIDNAME");
RRRRRRRR = GL.GetUniformLocation(-1, "ALSONOTVALID");
RRRRRRRR = GL.GetUniformLocation(-1, "BOGUSZZZZ");
RRRRRRRR = GL.GetUniformLocation(-1, "");

这些都是虚假的值(即使是第一种情况下的程序ID),但它们都返回ZERO(0)而不是-1。我在GL.UseProgram()之前或之后用有效或无效的参数调用它们 - 我得到的所有内容都是相同的0(ZERO),无论如何。

我搜索谷歌搜索任何类似的问题但没有发现任何问题。

在我看来,我的OpenTK ES30 DLL以某种方式被冲洗了。这令人抓狂。

我要尝试连接其他OpenTK版本。别人的任何帮助都是神派。

编辑:找到修复程序!

从AndroidGameView构造函数中,我需要调用:

ContextRenderingApi = OpenTK.Graphics.GLVersion.ES3;

如果没有这个,API默认为ES1,即使我正在使用ES3.GL。

0 个答案:

没有答案