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 для всего.

0 ответов

Другие вопросы по тегам