glUseProgramObjectARB неверная ошибка операции - PullRequest
1 голос
/ 25 апреля 2011

При попытке использования glUseProgramObjectARB я получаю ошибку "недопустимая операция", и я не знаю, почему.

Шейдерные программы загружаются правильно, я вполне уверен. Это показано на glGetInfoLogARB:

  • Вершинный шейдер был успешно скомпилирован для работы на оборудовании.
  • Фрагментный шейдер был успешно скомпилирован для работы на этом оборудовании.

До этой команды не было ошибок openGL. Так что проблема с этой конкретной командой определенно является проблемой.

Я использую glew с SDL. Я раньше использовал GLee, и у меня возникла та же проблема.

Чтение документации Я предполагаю, что это ошибка:

GL_INVALID_OPERATION генерируется, если программа не может быть частью текущего состояния.

но я не уверен точно, что могло вызвать такую ​​вещь. Команда выдается в рабочем контексте openGL, так как все предыдущие команды шейдеров работают нормально. Он не находится между блоком «начало» и «конец».

Действительно, я в тупике, что бы это могло значить. Возможно, есть более конкретный случай, когда команда не может быть введена. Если кто-нибудь знает что-то еще, это было бы здорово.

EDIT:

Решено: о боже, это было задержка, я пропускал возврат по одному из моих вызовов функций в другом месте и поэтому не передавал обратно программу, которую я построил.

1 Ответ

3 голосов
/ 25 апреля 2011

Не видя ваш код, это трудно понять, но, поскольку вы явно упоминаете результаты glCompileShaderARB (раза два), но не glLinkProgramARB, я буду догадываться, что вы забыли glLinkProgramARB (после чего, кстати, вы можете безопасно glDeleteObjectARB два шейдерных объекта).

...