使用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。