Почему glBindTexture() выдает мне ошибку GL_INVALID_ENUM, хотя GL_TEXTURE2D действителен?

#java #opengl-es-2.0

#java #opengl-es-2.0

Вопрос:

В документации glBindTexture() к функции OpenGL говорится

[…] Должно быть либо GL_TEXTURE_2D, либо GL_TEXTURE_CUBE_MAP .

Несмотря на то, что я вызываю функцию следующим образом:

 GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
  

это выдает мне ошибку GL_INVALID_ENUM.

Я уже пытался вызвать glEnable(GL_TEXTURE_2D) функцию, но это не удалось.

Что вызывает это?

Комментарии:

1. Вы полностью уверены, что ошибка связана с этим вызовом? Когда вы вызываете glGetError() перед выполнением этого вызова, он возвращается GL_NO_ERROR ? И только после этого вызова он возвращается GL_INVALID_ENUM ? Извините за очевидный вопрос, но на удивление часто случается, что люди звонят glGetError() и предполагают, что возвращенная ошибка была вызвана непосредственно предшествующим вызовом, в то время как статус ошибки был фактически установлен более ранним вызовом.

2. @Reto Koradi Спасибо за ваш ответ. Я проверю это.

3. @RetoKoradi Ваше предположение было правильным. Ошибка фактически генерируется перед этим утверждением. Но я понятия не имею, откуда она берется.

4. Распространите glGetError() вызовы по вашему коду и посмотрите, где обнаружена первая ошибка. Вы можете использовать что-то вроде ручного двоичного поиска. Сначала вы нашли место в коде, где нет ошибки, а затем место, где есть ошибка, вы размещаете другое glGetError() примерно на полпути между ними и постепенно сокращаете диапазон таким образом, пока не сузите его до одного вызова.