opengl GL.GetUniformLocation всегда возвращает ноль (0)
Использую OpenGL ES30 с Xamarin/C#.
Моя проблема в том, что независимо от того, что я делаю, когда я звоню:
OpenTK.Graphics.ES30.GL.GetUniformLocation (progID, "varName");
ВСЕГДА возвращает НОЛЬ. (не -1).
Все следующие операторы возвращают 0:
int RRRRRRRR = GL.GetUniformLocation(Terrain3D.TileShader.Id, "NOTVALIDNAME");
RRRRRRRR = GL.GetUniformLocation(-1, "ALSONOTVALID");
RRRRRRRR = GL.GetUniformLocation(-1, "BOGUSZZZZ");
RRRRRRRR = GL.GetUniformLocation(-1, "");
Все это фиктивные значения (даже для идентификатора программы во всех случаях, кроме 1-го случая), но все они возвращают НОЛЬ (0), а не -1. Я вызываю их до GL.UseProgram() или после, с действительными или недействительными аргументами - и все, что я получаю, это один и тот же 0(НОЛЬ), несмотря ни на что.
Я искал в Google любые проблемы, которые напоминают это, и ничего не нашел.
Мне кажется, что мои библиотеки OpenTK ES30 каким-то образом связаны. Это сводит с ума.
Я попробую подключиться к другим версиям OpenTK. Любая помощь от других будет отправлена богом.
РЕДАКТИРОВАТЬ: нашел решение!
Из конструктора AndroidGameView мне нужно было вызвать:
ContextRenderingApi = OpenTK.Graphics.GLVersion.ES3;
Без этого API по умолчанию будет ES1, хотя я использую ES3.GL для всего.